riku
2024-01-10 a9e8e27e0503552b7b2a99c821da732175d4f071
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
from decorator.singleton import singleton
from db.db_conn import db_conn
from db.models.tables import RequestTask, RequestTaskLog
from datetime import datetime
 
 
@singleton
class RequestTaskRepository(object):
    """爬取任务相关数据库操作"""
 
    def __init__(self) -> None:
        pass
 
    def create_task(self) -> str:
        """创建任务记录"""
        # 根据任务编号降序获取历史最新任务
        task = db_conn.query_sql(lambda session: session.query(RequestTask).order_by(RequestTask.start_time.desc()).first(), new_session=True)
        # 创建新任务
        if task == None:
            id = 1
        else:
            id = task.id + 1
        new_task = RequestTask(id=id, start_time=datetime.now())
        db_conn.insert(new_task)
        return id
 
    def complete_task(self, task_id, s):
        """完成任务,更新任务状态"""
        def f(session):
            task = session.query(RequestTask).filter_by(id=task_id).one()
            task.end_time = datetime.now()
            task.running_status = False
            task.success = s
            session.commit()
        return db_conn.query_sql(f, new_session=True)
 
    def insert_log(self, task_id, type, log):
        """记录任务日志"""
        task_log = RequestTaskLog()
        task_log.create_time = datetime.now()
        task_log.request_id = task_id
        task_log.log_type = type
        task_log.log = log
        return db_conn.insert(task_log)