相关疑难解决方法(0)

如何向Celery Beat动态添加计划任务

我正在使用Celery 3.1.23版,将动态计划的任务动态添加到芹菜节拍中。我有一名芹菜工作者和一名芹菜节拍实例正在运行。

运行task.delay()可以触发标准的芹菜任务。当我将计划的定期任务定义为配置中的设置时,芹菜节拍将其运行。

但是,我需要的是能够添加在运行时在指定的crontab上运行的任务。将任务添加到持久性调度程序后,芹菜节拍似乎无法检测到新添加的新任务。我可以看到celery-schedule文件确实有一个包含新任务的条目。

码:

scheduler = PersistentScheduler(app=current_app, schedule_filename='celerybeat-schedule')
scheduler.add(name="adder",
          task="app.tasks.add",
          schedule=crontab(minute='*/1'),
          args=(1,2))
scheduler.close()
Run Code Online (Sandbox Code Playgroud)

当我跑步时:

print(scheduler.schedule)
Run Code Online (Sandbox Code Playgroud)

我得到:

{'celery.backend_cleanup': <Entry: celery.backend_cleanup celery.backend_cleanup() <crontab: 0 4 * * * (m/h/d/dM/MY)>,
'adder': <Entry: adder app.tasks.add(1, 2) <crontab: */1 * * * * (m/h/d/dM/MY)>}
Run Code Online (Sandbox Code Playgroud)

请注意,app.tasks.add具有@celery.task装饰器。

python celery python-3.x celerybeat

5
推荐指数
1
解决办法
1713
查看次数

标签 统计

celery ×1

celerybeat ×1

python ×1

python-3.x ×1