celery celerybeat可以在运行时动态添加/删除任务吗?

时间:2016-05-11 04:53:14

标签: python django celery django-celery

我有一个不包含Django的项目,所以我不能使用djcelery。

但是我找到了使用sqlalchemy的modification django-celery DatabaseSchedule

它像djceley的DatabaseScheule一样工作正常。 但唯一的问题是它似乎没有发送在运行时添加的任务,然后我重新启动celery-beat,之前添加的任务将成功发送。

那么,是否可以在不重启celery-beat的情况下动态添加/删除任务?

感谢您的任何建议。抱歉我的英语不好。

对不起,这是我的错。在运行时添加的任务不会立即被选中,您可以将DatabaseScheduler.sync_every值更改为更快的值。所以等了好几分钟后就可以了。

感谢tuomur的帮助。

1 个答案:

答案 0 :(得分:1)

解决方案1:

我也有同样的问题,问题是,Celery定期调度程序会查找[djcelery_periodictasks][last_update]。如果[last_update]没有变化,那么芹菜将不会检查[djcelery_periodictask]表。

我们要做的是,当您添加/删除任务时,[last_update]更新[djcelery_periodictasks]时间。

在我的senario中,我在python中有定期调度程序。但是我的Web UI是用C#编写的。我的网络应用程序将添加/删除[djcelery_periodictask]中的条目,并更新[last_update]中的[djcelery_periodictasks]时间。

通过这种方式,我已经解决了这个问题。

当我们使用标准flower用户界面时,如果我们添加/删除任务,它将在[last_update]中更新[djcelery_periodictasks]时间。如果您开发了自己的自定义UI /应用程序,则必须包含在[last_update]中更新[djcelery_periodictasks]时间以动态添加/删除任务的功能。

<强>溶液2:

使用花:https://github.com/mher/flower