修改Celery节拍时间表搁置数据库

时间:2019-12-05 11:16:07

标签: python celery scheduled-tasks scheduler

我正在尝试在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或类似的调度程序就不可能?

1 个答案:

答案 0 :(得分:0)

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