Запустите задание cron один раз для всего приложения в Flask - PullRequest
0 голосов
/ 15 февраля 2020

Я смотрел на использование APScheduler BackgroundScheduler для запуска задания каждые несколько секунд.

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

Мне кажется, что для каждого процесса, который создает Flask, будет запущен поток BackgroundScheduler. Это означает, что в облаке работа будет повторяться.

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

1 Ответ

1 голос
/ 15 февраля 2020

С точки зрения архитектуры, вам нужны некоторые операции над базой данных. В идеале это не должно быть частью вашего Flask приложения.

Flask предназначено для веб-сервера. Он должен использоваться как веб-сервер. Задача, которую вы хотите запустить, должна выполняться в виде отдельного сценария с использованием ApScheduler или чего-либо еще, что вам может понадобиться. Между ними должно быть разделение, поскольку они не зависят друг от друга.

Предположим, что завтра ваше Flask приложение аварийно завершится, означает ли это, что ваш скрипт не должен работать?

Если ваше требование было бы чем-то вроде конечной точки, где вы располагаете временем и заданием для планирования, а затем вам необходимо выполнить обработку в это время, имея APScheduler и Flask вместе, имело бы смысл.

...