有没有办法在运行时添加,修改,删除celery.schedules。我需要定期读取数据库表以了解计划列表的内容。
文档说可以使用djcelery.schedulers.DatabaseScheduler
来实现我想要的,但不知道该怎么做。
我看过How to dynamically add / remove periodic tasks to Celery (celerybeat),还不清楚
感谢您的帮助
答案 0 :(得分:13)
在您的应用设置中进行设置时:
CELERYBEAT_SCHEDULER='djcelery.schedulers.DatabaseScheduler'
celery beat
进程检查django PeriodicTask模型以查看应该执行的任务。
您可以使用django model修改/删除/删除这些任务:
from djcelery.models import PeriodicTask, CrontabSchedule
every_hours_crontab = CrontabSchedule(minute=0)
every_hours_crontab.save()
periodic_task = PeriodicTask(
name='Call my task every hour',
task='myproject.tasks.mytask',
crontab=every_hours_crontab,
args=json.dump([arg1, arg2]),
kwargs=json.dump({'foo': 'bar'})
)
periodic_task.save()
您还可以使用django管理面板测试PeriodicTask的各种配置:
http://localhost:8000/admin/djcelery/crontabschedule/add/
http://localhost:8000/admin/djcelery/periodictask/