У меня есть полностью работающий Django 1.8.5 + Celery 3.1.18 на localhost с периодическими настройками задач. Но на сервере (Ubuntu 14.04) мне нужен дополнительный файл celerybeat.conf (first is celery.conf), чтобы периодически выполнять задачи на сервере. Если я запустить вручную сельдерей на сервере простых задач работают (UPD: также периодические задачи тоже работает с -B вариант):Django: CeleryBeat с супервизором на сервере не планирует периодическую задачу
celery worker -A engine -B -l debug
но если работать с Supervisor он начинает, обнаружить периодическую задачу (в settings.py Джанго), но ничего не делают. Нет ошибок в журналах (только предупреждения), нет планирования задач
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),
},
}
Вы пробовали работника с дополнительным флагом '-B' (для бит). Этот флаг также должен быть указан в настройках CELERY_OPTS в конфигурационном файле демона – schwobaseggl
@schwobaseggl Да: в celery.conf попытался добавить -B: command =/usr/local/bin/celery worker -A engine -loglevel = INFO Также в команде celerybeat.conf =/usr/local/bin/celery worker -A engine -B --llusvel = INFO, но оба варианта не работают –