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())