首页 > 解决方案 > 调度器根据不同的时间间隔来调度任务

问题描述

我正在编写一个脚本,在其中查询数据库并获取schedule_timeand schedule_interval

{
"task":"dump",
"schedule_time":"12:00:00",
"schedule_interval":"hourly"
"last_modified_time": ISODate("2021-07-28T18:35:43.713Z")
}

因此,与此类似,我可以以每小时/每分钟/每天/每周/每月/每年甚至几秒的时间间隔执行任务。我的脚本开始于:

class ScheduledTaskManager:

    def __init__(self) -> None:
        self.scheduled_tasks = {}

    def calculate_time_diff_to_schedule(task, schedule_time, schedule_interval):
        if "schedule_interval" == "secondly":
             #how do i calculate the difference here in order to schedule be it for any 
             # interval???
             # secondly/minutely/hourly/daily/weekly/monhtly/yearly, each of it has to be hndled.
            
    def start(self):
        logger.info(f"[start][ScheduledTaskManager][{str(self)}]")
        while True:
            for task in db.find(collection="foo", query={}):
                schedule_time = task.get("schedule_time")
                schedule_interval = task.get("schedule_interval")
                if not schedule_time and schedule_interval:
                    continue
                calculate_time_diff_to_schedule(task, schedule_time, schedule_interval)

如何在相应的时间间隔安排所有这些事件?特别是如果我想使用多处理。

标签: pythonpython-3.xmultithreadingcronscheduled-tasks

解决方案


推荐阅读