【问题标题】:Modifying Celery beat schedule shelve database修改 Celery 节拍计划搁置数据库
【发布时间】:2020-03-30 07:30:00
【问题描述】:

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

这是一个相关的older questionOne 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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2020-09-27
      • 2023-03-11
      • 2013-05-18
      • 1970-01-01
      • 1970-01-01
      • 2011-07-18
      • 2017-01-10
      • 1970-01-01
      • 2017-07-17
      相关资源
      最近更新 更多