Выполнение заданий с сельдереем по периодическому графику - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь выполнить задачу с сельдереем в Джанго. Я хочу выполнить задачу каждый день в 12:30, для чего я написал это в своих tasks.py

@periodic_task(run_every=crontab(minute=30, hour=12), name="elast")
def elast():
        do something


Это неработает, но если я хочу планировать его каждые 30 секунд, я пишу этот код

@periodic_task(run_every=(timedelta(seconds=30)), name="elast")
def elast():
        do something

Это работает. Я хотел бы знать, что не так с первым фрагментом кода? Любая помощь будет принята.

Ответы [ 2 ]

1 голос
/ 10 мая 2019

В соответствии с последней версией сельдерея 4.3, для выполнения задачи в 12:30 вечера ниже будет полезен код celery.py

from celery.schedules import crontab

app.conf.beat_schedule = {
    # Executes every day at  12:30 pm.
    'run-every-afternoon': {
        'task': 'tasks.elast',
        'schedule': crontab(hour=12, minute=30),
        'args': (),
    },
}

tasks.py

import celery
@celery.task
def elast():
    do something

для запуска планировщика ритма сельдерея сельдерей -проектный рабочий -B

для старой версии с сельдереем 2.0

from celery.task.schedules import crontab
from celery.decorators import periodic_task

@periodic_task(run_every=crontab(hour=12, minute=30))
def elast():
    print("code execution started.")

проверьте настройку часового пояса.

Новый гид

Старый путеводитель

0 голосов
/ 10 мая 2019

Ознакомьтесь с документацией , особенно с деталями, предназначенными для пользователей Django. Также обратите внимание, что использование @periodic_task декоратор устарело и должно быть заменено конфигурацией beat_schedule (см. код ).

...