“CELERY_BEAT_SCHEDULER”配置在 django 设置中不起作用

问题描述 投票:0回答:2

我在 django 项目设置文件中设置了

CELERY_BEAT_SCHEDULER = "django_celery_beat.schedulers:DatabaseScheduler"
。但好像没用。

我检查了celerybeat日志,发现celery节拍调度程序是

celery.beat.PersistentScheduler
。我只能在 celery 节拍启动文件中将节拍调度程序设置为“DatabaseScheduler”(
celery -A config beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler
)。

如何在 django 设置文件中设置调度程序?我不想在 celerybeat 启动命令中设置调度程序。

django celery django-celery
2个回答
7
投票

将以下选项添加到 Django settings.py

芹菜=< 4.4.0:

CELERYBEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler'

对于芹菜> 4.4.0:

CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler'

0
投票

我也有同样的问题。虽然我设置了 django 设置 CELERY_BEAT_SCHEDULER = "django_celery_beat.schedulers:DatabaseScheduler",但 celerybeat 没有使用调度程序 django_celery_beat.schedulers:DatabaseScheduler。它使用 celery.beat.PersistentScheduler。

发现 celery 不支持变量 CELERY_BEAT_SCHEDULER,因为 celery.py 文件中的代码 app.config_from_object('django.conf:settings') 中未使用命名空间。

将其更改为 app.config_from_object('django.conf:settings', namespace='CELERY') 后,Celery Beat 开始正确使用 django 设置 CELERY_BEAT_SCHEDULER 并且数据库中的定期计划开始工作。

© www.soinside.com 2019 - 2024. All rights reserved.