使用:
CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler'
配置后,运行celery -A app beat -l info
会正确启动并返回scheduler -> django_celery_beat.schedulers.DatabaseScheduler
当“周期任务”表发生更改时,Celery会正确地注意到通知,但是没有任何一个任务运行过。 (我在一个单独的进程中运行一个工作程序)我注意到,即使设置了数据库调度程序,我也得到了celerybeat-schedule.db文件,这让我怀疑Celery.beat是否正在读取正确的数据库。
拖放到控制台:
from celery.beat import Service
test = Service(current_app).get_scheduler()
print(test)
<celery.beat.PersistentScheduler object at 0x10abec090>
test.get_schedule()
{u'celery.backend_cleanup': <ScheduleEntry: celery.backend_cleanup celery.backend_cleanup() <crontab: 0 4 * * * (m/h/d/dM/MY)>}
似乎正在使用自动设置的backend_cleanup任务调用celerybeat-schedule.db文件。
Celery Beat正在正确监视我通过Django Admin添加的任务,但是实际读取的Beat并将其发送给工作人员的那一部分仅读取celerybeat-schedule.db文件,该文件包含自动创建的清理任务。