Я попытался с помощью этого кода попытаться динамически добавить / удалить запланированные задачи.
Мой файл tasks.py выглядит так:
from celery.decorators import task
import logging
log = logging.getLogger(__name__)
@task
def mytask():
log.debug("Executing task")
return
Проблема в том, что задачи на самом деле не выполняются (т. е. нет вывода журнала), но я получаю следующие сообщения в файле журнала celery точно по расписанию:
[2013-05-10 04:53:00,005: INFO/MainProcess] Got task from broker: cron.tasks.mytask[dfcf397b-e30b-45bd-9f5f-11a17a51b6c4]
[2013-05-10 04:54:00,007: INFO/MainProcess] Got task from broker: cron.tasks.mytask[f013b3cd-6a0f-4060-8bcc-3bb51ffaf092]
[2013-05-10 04:55:00,007: INFO/MainProcess] Got task from broker: cron.tasks.mytask[dfc0d563-ff4b-4132-955a-4293dd3a9ac7]
[2013-05-10 04:56:00,012: INFO/MainProcess] Got task from broker: cron.tasks.mytask[ba093535-0d70-4dc5-89e4-441b72cfb61f]
Я могу точно подтвердить, что регистратор настроен правильно и работает нормально. Если бы я попытался вызвать result = mytask.delay()
в интерактивной оболочке, result.state
бесконечно содержал бы состояние PENDING
.
РЕДАКТИРОВАТЬ: см. также Django Celery Periodic Tasks. Выполнить, но очереди RabbitMQ не используются