Когда я начинал писать код, создание и управление Cron Jobs было для меня одной из самых страшных задач. В основном потому, что я начал создавать простые приложения на PHP на общих хостах. Я не мог понять, как работают сроки выполнения заданий и как работает выбор скриптов для запуска.

Если вы не знакомы с Cron Jobs, вот простое объяснение из Википедии:

Люди, которые настраивают и обслуживают программные среды, используют cron для планирования заданий (команд или сценариев оболочки), которые должны выполняться периодически в фиксированное время, даты или интервалы.

Стало намного проще работать с запланированными функциями или сценариями в JavaScript (Node.js), поскольку вы можете легко определить, когда вы хотите, чтобы определенные функции запускались, используя такие пакеты, как node-schedule.

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

APScheduler

Эта библиотека отлично работает, когда вы хотите запускать запланированные функции в фоновом режиме, и именно ее я выбрал для своего небольшого приложения.

Вы можете определить задание для запуска в фоновом режиме в вашем приложении Flask следующим образом:

Вышеупомянутое задание просто печатает текущее время каждые 2 секунды.

APScheduler также имеет хорошую документацию, вы можете ознакомиться с ней здесь.

Расписание

Я также обнаружил Schedule, встроенный планировщик Python. Мне особенно нравится синтаксис этой библиотеки и то, насколько легко создатели сделали его для определения заданий.

Вы можете запланировать простую работу с библиотекой следующим образом:

Наше заданное здесь задание также распечатывает время каждые 2 секунды. Я думаю, что Schedule отлично подойдет для планирования в простых скриптах Python. Мне определенно не терпится поскорее попробовать. Вы можете ознакомиться с его документацией здесь.

Заключение

Мне очень понравилось работать с APScheduler, хотя я еще не использовал его для каких-либо сверхсложных вещей. Как вы управляете запланированными функциями в своих приложениях? Вы можете поделиться в комментариях!