如何使用Celery延迟任务?

时间:2010-07-28 21:03:49

标签: python django celery

不是在讨论delay方法。

我希望能够获得一项任务,因为它是task_id并在执行之前动态更改它的ETA。

现在我必须取消它,并重新安排一个。如果预定的过程涉及很多东西,那就太麻烦了。

2 个答案:

答案 0 :(得分:1)

您应该在celery / task队列之外存储一些'pause'值。我用一个使用芹菜的邮件来做这个。我可以通过在memcache或mysql中设置值来暂停系统的某些部分。然后,任务确保在执行任务之前查询外部资源。如果它意味着暂停它设置它会执行task.retry(),导致它经历重试延迟时间等。

答案 1 :(得分:1)

假设您正在使用django-celery和PeriodicTask与DatabaseScheduler,您需要修改PeriodicTask间隔或crontab并保存它。如果您的任务由间隔定义,请修改last_run_at属性。

使用数据库调度程序运行celerybeat:

python manage.py celerybeat -S djcelery.schedulers.DatabaseScheduler