我有一个不包含Django的项目,所以我不能使用djcelery。
但是我找到了使用sqlalchemy的modification django-celery DatabaseSchedule。
它像djceley的DatabaseScheule一样工作正常。 但唯一的问题是它似乎没有发送在运行时添加的任务,然后我重新启动celery-beat,之前添加的任务将成功发送。
那么,是否可以在不重启celery-beat的情况下动态添加/删除任务?
感谢您的任何建议。抱歉我的英语不好。
对不起,这是我的错。在运行时添加的任务不会立即被选中,您可以将DatabaseScheduler.sync_every
值更改为更快的值。所以等了好几分钟后就可以了。
感谢tuomur的帮助。
答案 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:强>