Когда я начинал писать код, создание и управление Cron Jobs было для меня одной из самых страшных задач. В основном потому, что я начал создавать простые приложения на PHP на общих хостах. Я не мог понять, как работают сроки выполнения заданий и как работает выбор скриптов для запуска.
Если вы не знакомы с Cron Jobs, вот простое объяснение из Википедии:
Люди, которые настраивают и обслуживают программные среды, используют cron для планирования заданий (команд или сценариев оболочки), которые должны выполняться периодически в фиксированное время, даты или интервалы.
Стало намного проще работать с запланированными функциями или сценариями в JavaScript (Node.js), поскольку вы можете легко определить, когда вы хотите, чтобы определенные функции запускались, используя такие пакеты, как node-schedule.
Вчера мне понадобилось запускать запланированные функции в моем приложении Flask, и я обнаружил для этого несколько замечательных библиотек.
APScheduler
Эта библиотека отлично работает, когда вы хотите запускать запланированные функции в фоновом режиме, и именно ее я выбрал для своего небольшого приложения.
Вы можете определить задание для запуска в фоновом режиме в вашем приложении Flask следующим образом:
Вышеупомянутое задание просто печатает текущее время каждые 2 секунды.
APScheduler также имеет хорошую документацию, вы можете ознакомиться с ней здесь.
Расписание
Я также обнаружил Schedule, встроенный планировщик Python. Мне особенно нравится синтаксис этой библиотеки и то, насколько легко создатели сделали его для определения заданий.
Вы можете запланировать простую работу с библиотекой следующим образом:
Наше заданное здесь задание также распечатывает время каждые 2 секунды. Я думаю, что Schedule отлично подойдет для планирования в простых скриптах Python. Мне определенно не терпится поскорее попробовать. Вы можете ознакомиться с его документацией здесь.
Заключение
Мне очень понравилось работать с APScheduler, хотя я еще не использовал его для каких-либо сверхсложных вещей. Как вы управляете запланированными функциями в своих приложениях? Вы можете поделиться в комментариях!