В этом примере periodi c расписание задач определяется непосредственно в коде, то есть оно жестко запрограммировано и не может быть изменено динамически без изменения кода и повторного развертывания приложения.
Предоставленный код с логами задач c удалено или с простым return
в начале - будет работать, но не будет ответом на вопрос - задача все еще будет выполняться, просто нет кода, который будет работать с ней.
Также , рекомендуется НЕ использовать @periodic_task
:
"" "Устаревший декоратор, пожалуйста, используйте: setting: beat_schedule
." ""
, поэтому не рекомендуется его использовать.
Сначала измените метод с @periodic_task
на обычный сельдерей @task
, и поскольку вы используете Django - лучше на go прямо для @shared_task
:
from celery import shared_task
@shared_task
def task_abcd():
...
Теперь это только одна из задач сельдерея, которую нужно вызывать явно. Или его можно запускать периодически, если он добавлен в график ударов сельдерея.
Для производства и при использовании нескольких рабочих не рекомендуется запускать работника сельдерея со встроенным ударом (-B) - запускать отдельный экземпляр планировщика ударов сельдерея.
Расписание может задано в celery.py
или в django настройках проекта (settings.py
).
Это все еще не очень динамично c, что касается Перечитанное приложение настроек необходимо перезагрузить.
Затем используйте Database Scheduler , который позволит динамически создавать расписания - какие задачи нужно запускать, когда и с какими аргументами. Он даже обеспечивает хорошие django административные веб-представления для администрирования!