在运行时添加,修改,删除celery.schedules

时间:2014-05-19 14:51:56

标签: python celery

有没有办法在运行时添加,修改,删除celery.schedules。我需要定期读取数据库表以了解计划列表的内容。

文档说可以使用djcelery.schedulers.DatabaseScheduler来实现我想要的,但不知道该怎么做。

我看过How to dynamically add / remove periodic tasks to Celery (celerybeat),还不清楚

感谢您的帮助

1 个答案:

答案 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/