ОК, ребята, это меня заводит. Я сейчас работаю над этим в ПОЛНЫЙ ДЕНЬ и не могу заставить его работать!
Моя структура сельдерей проекта заключается в следующем:celeryd and celerybeat - «Полученная незарегистрированная задача типа ...»
# celery.py
from celery.schedules import crontab
from celery import Celery
celery = Celery('scheduler.celery',
include=['scheduler.tasks'])
celery.config_from_object('celeryconfig')
И:
# tasks.py
from scheduler.celery import celery
@celery.task
def test():
do_something()
И:
# celeryconfig.py
from celery.schedules import crontab
CELERYBEAT_SCHEDULE = {
'test-cron': {
'task': 'tasks.test',
'schedule': crontab(minute='*/1'),
},
}
# CELERY_IMPORTS = ('tasks',)
BROKER_URL = 'redis://localhost:6379/0'
Все файлы находятся в папке projects/scheduler/
.
Когда я запускаю службу celeryd
, я вижу, что она работает и подключается к моему брокеру, но когда я запускаю службу celerybeat
, я могу видеть в журнале сообщение: Received unregistered task of type 'tasks.test'
.
Если я раскомментирую константу CELERY_IMPORTS
(как предлагается во многих ответах здесь, в SO), услуга celeryd
даже не запустится! Фактически, он выводит OK
, но с использованием ps ef | grep celery
Я вижу, что он не работает.
Мой файл конф демон выглядит следующим образом:
# Name of nodes to start
CELERYD_NODES="w1"
# Where to chdir at start.
CELERYD_CHDIR="/home/me/projects/scheduler/"
# Extra arguments to celeryd
CELERYD_OPTS="--time-limit=300 --concurrency=4"
# %n will be replaced with the nodename.
CELERYD_LOG_FILE="/var/log/celery/%n.log"
CELERYD_PID_FILE="/var/run/celery/%n.pid"
# Workers should run as an unprivileged user.
CELERYD_USER="celery"
CELERYD_GROUP="celery"
# Extra arguments to celerybeat
CELERYBEAT_OPTS="--schedule=/var/run/celerybeat-schedule"
Любая помощь очень ценится.
Спасибо за ответ. Это не сработало на нашей машине. Я, наконец, заставил его работать с помощью 'celeryconfig.py' вне папки' scheduler'. Не идеально, но, по крайней мере, он работает – user1102018
Вы пытались загрузить конфигурацию как 'celery.config_from_object ('scheduler.celeryconfig')' вместо этого перемещать файл? – tbicr
Нет, я думал, что 'CELERYD_CHDIR' должно быть достаточно для указания пути к файлу. – user1102018