繁体   English   中英

celery 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM