Jak*_*cki 5 python celery python-3.x celerybeat
我正在使用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装饰器。
您可以通过启用自动重新加载来解决您的问题。
不过,我不能 100% 确定它适用于您的配置文件,但如果位于 CELERY_IMPORTS 路径中,则应该适用。
Hoverer 请注意,此功能是实验性的,不会在生产中使用。
如果您确实想要动态 celerybeat 调度,您始终可以使用另一个调度程序(例如 django-celery 调度程序)通过 django admin 管理数据库上的定期任务。
| 归档时间: |
|
| 查看次数: |
1713 次 |
| 最近记录: |