Примеры Django и сельдерея: периодические задачи
Я уже некоторое время борюсь с документацией Django/Celery и нуждаюсь в некоторой помощи.
Я хотел бы иметь возможность запускать периодические задачи с помощью django-celery. Я видел в Интернете (и документации) несколько разных форматов и схем, как можно было бы достичь этого, используя сельдерей...
Может ли кто-нибудь помочь с базовым, действующим примером создания, регистрации и выполнения периодической задачи django-сельдерея? В частности, я хочу знать, должен ли я писать задачу, которая расширяет класс PeriodicTask и регистрирует это, или я должен использовать декоратор @periodic_task, или должен ли я использовать декоратор @task, а затем настроить расписание для задачи выполнение.
Я не возражаю, если возможны три способа, но я хотел бы увидеть пример, по крайней мере, одного из способов. Поистине оцените вашу помощь.
Ответы
Ответ 1
Что случилось с примером из документов?
from celery.task import PeriodicTask
from clickmuncher.messaging import process_clicks
from datetime import timedelta
class ProcessClicksTask(PeriodicTask):
run_every = timedelta(minutes=30)
def run(self, **kwargs):
process_clicks()
Вы можете написать ту же задачу с помощью декоратора:
from celery.task.schedules import crontab
from celery.task import periodic_task
@periodic_task(run_every=crontab(minute="*/30"))
def process_clicks():
....
синтаксис декоратора просто позволяет вам превратить существующую функцию/задачу в периодическую задачу, не изменяя их напрямую.
Для выполнения задач celerybeat должен работать.