python - 调度器根据不同的时间间隔来调度任务
问题描述
我正在编写一个脚本,在其中查询数据库并获取schedule_time
and 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)
如何在相应的时间间隔安排所有这些事件?特别是如果我想使用多处理。
解决方案
推荐阅读
- apache-spark - 在结构化流中读取文件时检查 Spark 中是否存在列
- format - 自动完成 html 标记是否有括号扩展?
- c# - 如何解决“根据验证程序,远程证书无效”[FTP 中的错误]
- xamarin.ios - 适用于 iOS 的 Xamarin.Forms 附加文件夹,用于带后缀的日志
- python - 如何在 django-filter 中使用 DateTimeFilter,并传递一个自定义的“方法”参数?
- vue.js - 在 Nuxt 应用程序中导入 scss 模块
- database - CockroachDB 是否实现了行级安全性?
- java - NetworkInterface.getNetworkInterfaces() 硬件地址在列表中没有 wlan0
- azure - 如何将侦听器代理控制台应用程序作为 Windows 服务运行
- cumulocity - 如何创建非全局但链接到库存的报告?