Запланированное задание из приложения Flask

#python #flask #redis #celery #scheduled-tasks

#python #flask #redis #сельдерей #запланированные задачи

Вопрос:

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

Моя ситуация — это веб-инструмент, который генерирует электронные таблицы на основе пользовательского ввода. Я сохраняю эти электронные таблицы во временном каталоге, и когда пользователь нажимает кнопку «загрузить», я использую функцию Flask «send_from_directory» для отправки файла в качестве вложения. Мне нужно, чтобы фоновая служба запускалась каждые 15 минут или около того, чтобы очищать временный каталог от всех файлов старше 15 минут.

Моим первоначальным планом был базовый скрипт на python, выполняемый в цикле while (True), но я провел некоторое исследование, чтобы выяснить, что обычно делают люди, и everything рекомендует Celery или другие менеджеры задач. Я заглянул в Celery и обнаружил, что мне также нужно узнать о redis, и мне нужно, по-видимому, разместить redis в среде unix. Это создает много проблем для скрипта, который просто удаляет файлы каждые 15 минут.

Я разрабатываю свое приложение Flask локально в Windows с помощью встроенного сервера разработки и развертываю на виртуальной машине в корпоративной интрасети с помощью IIS. Я учусь по ходу дела, поэтому, пожалуйста, объясните, почему для регулярного вызова скрипта, который просто удаляет объекты, требуется столько машинного оборудования. Это кажется огромным усложнением, но, как я уже сказал, я пытаюсь учиться по ходу дела, поэтому я хочу делать / выучить это правильно.

Спасибо!

Ответ №1:

Вы бы не использовали Celery или redis для этого. Задание cron было бы совершенно подходящим.

Celery предназначен для заданий, которые необходимо запускать асинхронно, но в ответ на события в основных серверных процессах. Например, если форма регистрации требует отправки уведомления по электронной почте, это будет запланировано и запущено через Celery, чтобы не блокировать основной веб-ответ.

Комментарии:

1. Поскольку я выполняю развертывание в среде Windows, будет ли альтернативой заданию Cron планировщик Windows, или будет достаточно моего простого скрипта «while (True)», работающего в фоновом режиме? Наверное, я не понимаю, зачем требуется отдельное оборудование, такое как Cron или планировщик Windows.

2. Но что будет запускать цикл while? Что будет запускать его при запуске вашего сервера или перезапускать его, если он умирает? Запланированные задачи в любом случае не являются отдельным механизмом, они встроены в вашу операционную систему.