Как реализовать периодические задания в python/flask?

Есть такой микро-проект на микро-фреймворке flask. Появилась необходимость в периодических заданиях cron-like, с возможностью это дело гибко контролировать (менять интервал или приостановить задание вообще).
Вот это я много раз видел на продакшн-серверах, и так делать не хочется:
*/10     *       *       *       *       /var/www/project/tasks.py

Рассматривал вариант с Celery, но выглядит это решение слишком громозким для такой элементарной задачи, все таки это инструмент немного для других задач, и запускать лишние сервисы не хочется.

Еще, конечно, можно написать на коленке какой-то свой cron-велосипед, но такой вариант рассматривается в последнюю очередь.
  • Вопрос задан
  • 4763 просмотра
Пригласить эксперта
Ответы на вопрос 3
@alexeiromanoff
Если не нравится юниксовый крон и celery, видится единственный вариант - это писать свой cron-сервис.
В этом случае и формат описания задач можно придумать более человеческий. Да и оверхеда на порождение процессов можно избежать.
Например, разработчики Google App Engine так и поступили:
https://developers.google.com/appengine/docs/pytho...

Мне, помнится, довелось написать простенький скрипт, который парсил файлы, похожие на crontab и запускал задачи под Windows. Этим пришлось заняться, т.к. планировщик задач под Windows - животное очень кривое и ненадежное. Мой Python-скрипт регистрировался как Windows-сервис и проработал 3 года без всяких проблем, выполняя при этом свои обязанности.
Ответ написан
Комментировать
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Вам нужна очередь сообщений с отложенной доставкой. Это умеют beanstalk и RabbitMQ с помощью хитрого хака.
Ответ написан
@s1dney Автор вопроса
Пытался прикрутить Celery, но выглядело это как костыль, и я написал очень примитивный алгоритм запуска тасков внутри приложения Flask с сохранением промежуточной информации о выполнении в уже существующей базе данных. Таски выполняются в отдельных тредах.
Минимальный оверхед и еще 100 строчек кода для того, чтобы синхронизировать и восстановить таски после дауна uwsgi.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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