gpt4 book ai didi

python - Celery - 安排在特定时间开始的周期性任务

转载 作者:太空狗 更新时间:2023-10-29 22:16:49 25 4
gpt4 key购买 nike

安排从特定日期时间开始的定期任务的最佳方法是什么?

(考虑到我需要安排大约一百个远程 rsync,我没有为此使用 cron,我在这里计算远程与本地偏移量,并且需要在每个主机中生成日志的第二个 rsync 每个路径。)

根据我的理解,celery.task.schedules crontab 类只允许指定小时、分钟、星期几。到目前为止我发现的最有用的提示是 this answer by nosklo .

这是最好的解决方案吗?我是否使用了错误的工具来完成工作?

最佳答案

对于您的调度问题,Celery 似乎是一个很好的解决方案:Celery 的 PeriodicTasks 可以在几秒钟内解决运行时间问题。

您在这里使用了合适的工具,但 crontab 条目不是您想要的。你想使用 python 的 datetime.timedelta 对象; celery.schedules 中的 crontab 调度程序只有分钟分辨率,但使用 timedelta 来配置 PeriodicTask 间隔提供了严格的更多功能,在这种情况下,每秒分辨率。

例如来自 Celery 文档

>>> from celery.task import tasks, PeriodicTask
>>> from datetime import timedelta
>>> class EveryThirtySecondsTask(PeriodicTask):
... run_every = timedelta(seconds=30)
...
... def run(self, **kwargs):
... logger = self.get_logger(**kwargs)
... logger.info("Execute every 30 seconds")

http://ask.github.com/celery/reference/celery.task.base.html#celery.task.base.PeriodicTask

class datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)

这里唯一的挑战是您必须描述您希望此任务运行的频率,而不是您希望它运行的时钟时间;但是,我建议您查看 Advanced Python Scheduler http://packages.python.org/APScheduler/

看起来 Advanced Python Scheduler 可以很容易地用于启动正常的(即非定期的)Celery 任务,使用它自己的调度功能,您可以选择任何时间表。

关于python - Celery - 安排在特定时间开始的周期性任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7848512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com