Django:服务器上带有 Supervisor 的 CeleryBeat 不安排定期任务

Django: CeleryBeat with Supervisor on server doesn't schedule periodic task

我在本地主机上完全运行 Django 1.8.5 + Celery 3.1.18,并设置了定期任务。 但是在服务器 (Ubuntu 14.04) 上,我需要额外的文件 celerybeat.conf(第一个是 celery.conf)来使定期任务在服务器上运行。 如果我在服务器上手动启动芹菜,简单的任务正在运行(UPD:周期性任务也可以使用 -B 选项):

celery worker -A engine -B -l debug

但如果 运行 与 Supervisor 一起启动,检测周期性任务(在 settings.py django 中)但什么也不做。日志中没有错误(只有警告),没有任务调度

sudo supervisorctl reread
sudo supervisorctl restart celery

如何修复?

这里是settings.py

# Celery settings

BROKER_URL = 'django://'

from kombu.serialization import registry
registry.enable('pickle')
import djcelery
djcelery.setup_loader()

CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_RESULT_EXPIRES=3600
CELERY_RESULT_BACKEND='djcelery.backends.database:DatabaseBackend'
CELERY_RESULT_SERIALIZER = 'json' #json pickle msgpack
CELERY_TASK_SERIALIZER = 'json'
CELERY_IMPORTS=["wall.tasks"]
CELERY_TIMEZONE = 'Africa/Nairobi'
CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler"
CELERYBEAT_SCHEDULE_FILENAME = '/var/lib/celery/beat.db'

SECRET_KEY = 'nbx.........#)i0onegi)as%d80hpcxp98%d9sphh^aqgt'
from celery.schedules import crontab
CELERYBEAT_SCHEDULE = {
    'get_all_data': {
        'task': 'tasks.get_all_data',
        'schedule': crontab(minute="*/4"),
        #'args': (16, 16),
    },
}

你能 post 你的 celerybeat.conf 和 supervisord.conf 吗? 我在 http://www.lexev.org/en/2014/django-celery-setup/

找到了一个很好的教程