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/
找到了一个很好的教程
我在本地主机上完全运行 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/
找到了一个很好的教程