Подтвердить что ты не робот

Примеры Django и сельдерея: периодические задачи

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

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

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

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

4b9b3361

Ответ 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 должен работать.