![](/img/trans.png)
[英]Can celery,celerybeat and django-celery-beat dynamically add/remove tasks in runtime without restart celerybeat?
[英]Can celery celerybeat dynamically add/remove tasks in runtime?
我有一个不包含 Django 的项目,所以我不能使用 djcelery。
但是我发现使用 sqlalchemy 对django-celery DatabaseSchedule进行了修改。
它像 djceley 的 DatabaseScheule 一样工作正常。 但唯一的问题是它似乎没有发送运行时添加的任务,然后我重新启动celery-beat,之前添加的任务将成功发送。
那么,是否可以在不重新启动 celery-beat 的情况下动态添加/删除任务?
感谢您的任何建议。 很抱歉我的英语不好。
对不起,是我的错。 在运行时添加的任务不会立即被拾取,您可以将DatabaseScheduler.sync_every
值更改为更快的值。 所以它在等待几分钟后起作用。
感谢 tuomur 的帮助。
解决方案1:
我也遇到了同样的问题,问题是,Celery 定期调度程序将查找[djcelery_periodictasks]
将具有[last_update]
值。 如果[last_update]
没有变化,那么 celery 将不会检查[djcelery_periodictask]
表。
我们要做的是,当您添加/删除任务时,更新[djcelery_periodictasks]
的[last_update]
时间。
在我的 senario 中,我在 python 中有定期调度程序。 但是我的 Web UI 是用 C# 编写的。 我的web应用程序将添加/删除条目[djcelery_periodictask]
和更新[last_update]
在时间[djcelery_periodictasks]
通过这种方式,我已经解决了这个问题。
当我们使用标准flower
UI 时,如果我们添加/删除任务,它将更新[djcelery_periodictasks]
的[last_update]
时间。 如果您开发了自己的自定义 UI/应用程序,则必须包含更新[djcelery_periodictasks]
[last_update]
时间的功能,以动态添加/删除任务。
解决方案2:
使用花: https : //github.com/mher/flower
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.