在 Django 中使用 celerybeat 本地设置的正确方法是什么?

What is proper way to use local settings for celerybeat in Django?

我使用的是 django 1.8.7,django-celery 3.1.17。 我想覆盖 local_settings 中的 celery 周期性任务,我将其包含在基本设置文件的末尾。

本地设置文件中的这段代码不起作用:

BROKER_URL = 'amqp://test:test@localhost/'
CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler"
CELERYBEAT_SCHEDULE = {
    "test_task": {
        "task": "test.ptask",
        "schedule": crontab(minute="*/5"),
        "options": {'queue': 'slow_tasks'}
    }
}

当你直接调用 celery 时它不会服从 django settings.py。而是使用

调用
manage.py celery -A test worker -l warn -Q slow_tasks --concurrency=10

请注意,您应该将 django-celery 添加到您的 INSTALLED_APP。

另请查看此页面:http://docs.celeryproject.org/en/latest/tutorials/daemonizing.html#generic-initd-celerybeat-django-example

问题也出现在 CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler"。 定期任务存储在数据库中,因此您只需从管理面板中删除它们即可。