我已经在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),
},
}
答案 0 :(得分:1)
你能在这里发布你的celerybeat.conf和supervisord.conf吗? 我在http://www.lexev.org/en/2014/django-celery-setup/
找到了一个非常好的教程