Joa*_*edo 6 python scheduled-tasks celery
从特定日期时间开始安排定期任务的最佳方法是什么?
(我没有使用cron考虑到我需要安排大约一百个远程rsyncs,我计算远程vs本地偏移量,并且需要rsync每个路径,在每个主机中生成日志的第二个路径.)
根据我的理解,celery.task.schedules crontab类只允许指定小时,分钟,星期几.到目前为止我发现的最有用的提示是nosklo的答案.
这是最好的解决方案吗?我使用错误的工具来完成工作吗?
小智 12
对于您的调度问题,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")
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
这里唯一的挑战是你必须描述你想要运行这个任务的频率,而不是你想要它运行的时钟; 但是,我建议你查看高级Python调度程序http://packages.python.org/APScheduler/
看起来Advanced Python Scheduler可以很容易地用于在您选择的任何计划中使用它自己的调度功能启动正常(即非周期性)Celery任务.
| 归档时间: |
|
| 查看次数: |
6636 次 |
| 最近记录: |