Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

"CELERY_BEAT_SCHEDULER" config is not work in django settings

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.

like image 617
Jack Xu Avatar asked Sep 15 '25 05:09

Jack Xu


2 Answers

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'
like image 131
nih Avatar answered Sep 17 '25 18:09

nih


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.

like image 23
Saran Avatar answered Sep 17 '25 18:09

Saran