小编Ste*_*eve的帖子

Django Celery Beat管理员更新Cron计划周期性任务未生效

我在CentOS 7上使用Django 10,RabbitMQ和Celery 4运行一个站点.

我的Celery Beat和Celery Worker实例由主管控制,我正在使用django celery数据库调度程序.

我在Django-admin中使用cronsheduler计划了一个cron样式的任务.

当我开始芹菜殴打和工人实例时,工作按预期开火.

但是如果在Django-admin中更改计划时间,那么除非我重新启动celery-beat实例,否则不会获取更改.

有什么我缺少或我需要编写自己的调度程序吗?

Celery Beat与'django_celery_beat.schedulers.DatabaseScheduler'一起从数据库加载计划.根据以下文档https://media.readthedocs.org/pdf/django-celery-beat/latest/django-celery-beat.pdf,这将迫使Celery Beat重新加载:

以特定间隔(例如,每5秒)运行的计划.•django_celery_beat.models.CrontabSchedule包含cron中的条目的字段的计划:分钟星期几day_of_month month_of_year.

django_celery_beat.models.PeriodicTasks此模型仅用作跟踪计划更改时间的索引.每当您更新PeriodicTask时,此表中的计数器也会递增,这会告诉芹菜节拍服务从数据库重新加载计划.如果批量更新定期任务,则需要手动更新计数器:

from django_celery_beat.models import PeriodicTasks
PeriodicTasks.changed()
Run Code Online (Sandbox Code Playgroud)

从上面我可以看到Celery Beat流程定期检查表格是否有任何变化.

django centos rabbitmq celery django-celery

10
推荐指数
1
解决办法
3026
查看次数

标签 统计

celery ×1

centos ×1

django ×1

django-celery ×1

rabbitmq ×1