Подтвердить что ты не робот

Django + celery - Как настроить расписание crontab для сельдерея в моем приложении django?

Я следую инструкциям здесь:

http://celery.readthedocs.org/en/latest/userguide/periodic-tasks.html#crontab-schedules

Я должен был бы сделать следующее: from celery.schedules import crontab

В моем settings.py у меня есть:

from kombu import serialization
serialization.registry._decoders.pop("application/x-python-serialize")
import djcelery
djcelery.setup_loader()
from celery.schedules import crontab

...

CELERYBEAT_SCHEDULE = {
    'first_task': {
        'task': 'apps.icecream.tasks.sync_flavors',
        'schedule': crontab(minute='*/30', hour='1, 3, 6, 8-20, 22')
    },
    'second_task': {
        'task': 'apps.robots.tasks.run_robots',
        'schedule': crontab(minute='*/6')
    }
}

Тем не менее, я получаю сообщение об ошибке: "Нет модулей с расписаниями"

Если я переключусь на другой способ планирования, используя timedelta, тогда все будет в порядке, и я могу запустить свои периодические задачи:

CELERYBEAT_SCHEDULE = {
    'first_task': {
        'task': 'apps.icecream.tasks.sync_flavors',
        'schedule': timedelta(minutes=30)
    },
    'second_task': {
        'task': 'apps.robots.tasks.run_robots',
        'schedule': timedelta(minutes=6)
    }
}

Почему я не могу использовать подход crontab?

4b9b3361

Ответ 1

Это происходит потому, что у вас есть файл celery.py в том же пакете, что и ваш settings.py, который скрывает глобальный пакет celery.

Чтобы обойти это, вставьте следующую строку в начало settings.py:

from __future__ import absolute_import

Надеюсь, что это поможет!