Как я могу запланировать Задачу выполниться в определенное время с помощью сельдерея?

Я изучил PeriodicTask, но примеры только покрывают то, чтобы заставлять это повториться. Я ищу что-то больше как cronспособность сказать "выполняет эту задачу каждый понедельник в 1:00".

16
задан Hank Gay 2 January 2010 в 03:37
поделиться

4 ответа

Недавно выпущенная версия 1.0.3 поддерживает это сейчас, благодаря Патрику Альтману!

Пример:

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

@periodic_task(run_every=crontab(hour=7, minute=30, day_of_week="mon"))
def every_monday_morning():
    print("This runs every Monday morning at 7:30a.m.")

Смотрите изменение для получения дополнительной информации:

http://celeryproject.org/docs/changeLog.html

28
ответ дан 30 November 2019 в 15:18
поделиться

Используйте

YourTask.apply_async(args=[some, args, here], eta=when)

И в конце задачи перенесите ее на следующий запуск

.
28
ответ дан 30 November 2019 в 15:18
поделиться

Как вы можете прочитать в этом учебном пособии , вы можете сделать PeriodicTask, я думаю, если вы выполнили задачу в 1 .am. Утро понедельника - это потому, что вы хотите запустить длинную операцию на процессоре/меме, а сельдерей на память использует ampq для выполнения задач enqueue.

.
0
ответ дан 30 November 2019 в 15:18
поделиться

Я только что отправил патч, чтобы добавить ScheduledTask, чтобы выполнить небольшое планирование на основе времени по сравнению с периодом:

https://github.com/celery/celery/commit/e8835f1052bb45a73f9404005c666f2d2b9a9228

5
ответ дан 30 November 2019 в 15:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: