我正在尝试在Celery的运行时安排定期任务。

这是一个相关的older question。该问题中的One of the answers提到,自Celery版本4.1.0(我正在使用4.3.0)以来,现在可以在运行时添加任务,但我无法实现。

我正在芹菜节拍运行时(甚至当它不运行时)修改搁置数据库。这是执行此操作的代码:

import shelve
from celery.beat import ScheduleEntry
from celery.schedules import schedule

s = schedule(5, app=app)
entry = ScheduleEntry("Test Task", "proj.tasks.my_task", args=("arg1", "arg2"), schedule=s)
db = shelve.open("celerybeat-schedule", writeback=True)
db["entries"]["Test Task"] = entry
db.close()



这已成功存储在搁置文件中。这是搁置文件的entries字段:

{'Test Task': <ScheduleEntry: Test Task proj.tasks.my_task('arg1', 'arg2') <freq: 5.00 seconds>}


但是,一旦开始芹菜拍打,它就会覆盖此文件,并使entries字段为空的dict。我想念什么吗?还是不使用Django或类似的调度程序就不可能?

最佳答案

事实证明,这仍然是不可能的。我切换到使用celerybeat-mongo,它方便地将所有计划存储在Mongo集合中,并且还从可能由其他进程插入的同一集合中加载。

关于python - 修改Celery节拍时间表搁置数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59193920/

10-12 15:26