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

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

4 Solutions collect form web for “Как я могу запланировать выполнение задачи в определенное время с помощью сельдерея?”

Недавно выпущенная версия 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

использование

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

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

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

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

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

Python - лучший язык программирования в мире.