我试着在运行时用芹菜来安排周期性任务。你知道吗
这是一个相关的older question。One of the answers在这个问题中提到,从Celery版本4.1.0(我使用的是4.3.0)开始,现在可以在运行时添加任务,但我无法实现这一点。你知道吗
我正在修改shelve数据库,而芹菜节拍正在运行(甚至当它没有运行时)。下面是代码:
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集合中,还可以从可能由其他进程插入的同一集合中加载。你知道吗
相关问题 更多 >
编程相关推荐