I set CELERY_BEAT_SCHEDULER = "django_celery_beat.schedulers:DatabaseScheduler"
in my django project settings file. But It doesn't seem to work.
I check the celerybeat logs and I found that the celery beat scheduler is celery.beat.PersistentScheduler
. I can only set beat scheduler to "DatabaseScheduler" at the celery beat startup file (celery -A config beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler
).
How can I set the scheduler in django settings file ? I don't want to set the scheduler in the celery beat startup command.
Add the following option to Django settings.py
For celery =< 4.4.0:
CELERYBEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler'
For celery > 4.4.0:
CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler'
I had the same issue. Though I set the django setting CELERY_BEAT_SCHEDULER = "django_celery_beat.schedulers:DatabaseScheduler", celery beat is not using the scheduler django_celery_beat.schedulers:DatabaseScheduler. It uses the celery.beat.PersistentScheduler.
Found that the variable CELERY_BEAT_SCHEDULER is not honored by celery because the namespace is not used in the code app.config_from_object('django.conf:settings') in celery.py file.
After changing it to app.config_from_object('django.conf:settings', namespace='CELERY'), Celery Beat started using the django setting CELERY_BEAT_SCHEDULER correctly and the periodic schedule from the database started working.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With