Files
arlo/task/queue/task_queue.py
konjacpotato 2c8426d543 import arlo
2025-11-05 21:00:19 +08:00

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