Django:服务器上带有Supervisor的CeleryBeat不会定期执行任务

时间:2016-03-06 20:22:15

标签: python django celery django-celery supervisord

我已经在localhost上完全使用Django 1.8.5 + Celery 3.1.18进行定期任务设置。 但是在服务器(Ubuntu 14.04)上我需要额外的文件celerybeat.conf(首先是celery.conf)来定期在服务器上运行任务。 如果我在服务器上手动启动celery简单任务正在运行(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),
    },
}

1 个答案:

答案 0 :(得分:1)

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

找到了一个非常好的教程