Примеры Джанго и Сельдерея: Периодические Задачи
Я некоторое время боролся с документацией по 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():
....
Синтаксис декоратора просто позволяет вам превратить существующую функцию / задачу в периодическую задачу, не изменяя их напрямую.
Для выполнения задач сельдерея должны быть запущены.