30 lines
1.0 KiB
Python
30 lines
1.0 KiB
Python
import importlib
|
|
from functools import partial
|
|
|
|
from database.database import get_session
|
|
from database.tscheduler.model import TScheduler
|
|
from database.ttaskqueue.curd import get_tasks_to_finish, finish_task
|
|
from log.log_manager import log
|
|
from task.manager_task import execute_task
|
|
|
|
|
|
def start_task_queue(scheduler: TScheduler):
|
|
with get_session() as db:
|
|
tasks = get_tasks_to_finish(db)
|
|
if len(tasks) > 0:
|
|
log(f'start task queue with task size {len(tasks)}')
|
|
for task in tasks:
|
|
# 1. 动态构建任务函数
|
|
module = importlib.import_module(task.module_path)
|
|
task_function = partial(execute_task, getattr(module, task.function_name))
|
|
# 2. 执行任务
|
|
task_function()
|
|
# 3. 标记任务完成
|
|
finish_task(db, task.id)
|
|
# 4. 打印日志
|
|
log(f"{task} finish")
|
|
|
|
|
|
if __name__ == '__main__':
|
|
start_task_queue(TScheduler())
|