Примеры Джанго и Сельдерея: Периодические Задачи

Я некоторое время боролся с документацией по 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():
    ....

Синтаксис декоратора просто позволяет вам превратить существующую функцию / задачу в периодическую задачу, не изменяя их напрямую.

Для выполнения задач сельдерея должны быть запущены.

Другие вопросы по тегам