【发布时间】:2020-03-30 07:30:00
【问题描述】:
我正在尝试在 Celery 运行时安排定期任务。
这是一个相关的older question。 One of the answers 在那个问题中提到,现在可以在运行时添加任务,因为 Celery 版本 4.1.0(我使用的是 4.3.0),但我无法实现。
我正在修改搁置数据库,而 Celery beat 正在运行(或者即使它没有运行)。这是执行此操作的代码:
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>}
但是一旦 celery beat 开始,它就会覆盖这个文件,并使 entries 字段为空 dict。我错过了什么吗?或者如果不使用 Django 或类似的调度程序,这是不可能的?
【问题讨论】:
标签: python celery scheduled-tasks scheduler