Celery Beat: как определить периодические задачи, определенные как классы (задачи на основе классов)

До сих пор я работал только с задачами Celery, определенными как функции. Раньше я определял их периодичность в параметре CELERYBEAT_SCHEDULE. Как это:

from datetime import timedelta

CELERYBEAT_SCHEDULE = {
    'add-every-30-seconds': {
        'task': 'tasks.add',
        'schedule': timedelta(seconds=30),
        'args': (16, 16)
    },
}

Теперь я пытаюсь использовать задачи на основе классов, например:

class MyTask(Task):
    """My Task."""

    def run(self, source, *args, **kwargs):
        """Run the celery task."""
        logger.info("Hi!")

Мой вопрос: как определить периодическое выполнение задач на основе классов?


person Xar    schedule 20.06.2016    source источник
comment
Не уверен, что это поддерживается. Прочтите комментарии к этому ответу: stackoverflow.com/a/14515331/126125. По сути, Celerybeat не будет создавать экземпляр объекта — ему нужен обратный вызов. Согласно официальной документации (docs.celeryproject.org/ ru/latest/userguide/), необходимо указать имя задачи. Почему вы используете класс, а не обычную функцию?   -  person Markon    schedule 20.06.2016
comment
Нет ответа на это, и нет упоминания в документах   -  person Oleg Belousov    schedule 30.01.2017