Примеры Джанго и Сельдерея: Периодические Задачи - PullRequest
24 голосов
/ 22 ноября 2011

Я некоторое время боролся с документацией по Django / Celery и мне нужна помощь.

Я хотел бы иметь возможность запускать периодические задачи с использованием django-сельдерея. Я видел в Интернете (и в документации) несколько разных форматов и схем того, как можно добиться этого, используя Celery ...

Может ли кто-нибудь помочь с базовым, действующим примером создания, регистрации и выполнения периодического задания django-celery? В частности, я хочу знать, должен ли я написать задачу, расширяющую класс PeriodicTask, и зарегистрировать ее, или я должен использовать декоратор @periodic_task, или мне следует использовать декоратор @task, а затем настроить расписание для задачи выполнение.

Я не против, если возможны все три способа, но я хотел бы увидеть пример хотя бы одного способа, который работает. Очень ценю вашу помощь.

1 Ответ

37 голосов
/ 22 ноября 2011

Что не так с примером из документов ?

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 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...