Запуск Python скриптов через планировщик crontab
Если вы писали скрипты, которые должны выполняться с определенной периодичность, то наверное самое простое решение это повесить их выполнение на планировщик задач cron.
# открыть редактор планировщика > crontab -e # общий формат указания планировщику исполнение скрипта Python [параметры запуска] [ссылка на интерпретатор python] [путь до .py скрипта] # параметры запуска * * * * * - - - - - | | | | | | | | | ----- день недели (0—7) (воскресенье = 0 или 7) | | | ------- месяц (1—12) | | --------- день (1—31) | ----------- час (0—23) ------------- минута (0—59) # пример запуска "каждый час" 0 */1 * * * /usr/bin/python3 /opt/script1.py # пример запуска "каждые 4 часа в 15 минут" 15 */4 * * * /usr/bin/python3 /opt/script2.py # пример запуска "в 7:30 утра по воскресениям" 30 7 * * 0 /usr/bin/python3 /opt/script3.py
Пишем планировщик задач на Python с использованием библиотеки schedule
Есть и другой способ запускать функции python с определенной периодичностью без использования внешнего планировщика. Для этого будем использовать библиотеку schedule.
import datetime import schedule i = 1 def func(name): global i print(f'Функция {name} запустилась {i} раз') i += 1 # вывод времени чтобы проверить что все работает print(datetime.datetime.now()) # вызываем каждые 5 сек. schedule.every(5).seconds.do(func, name='schedule') # запускаем шедулер в бесконечном цикле для постоянного мониторинга факта наступления заданного события while True: schedule.run_pending()
В итоге исполнения данного кода, на выходе вы получите что-то похожее:
Функция schedule запустилась 1 раз 2022-04-11 11:18:34.124307 Функция schedule запустилась 2 раз 2022-04-11 11:18:39.124338 Функция schedule запустилась 3 раз 2022-04-11 11:18:44.124368 Функция schedule запустилась 4 раз 2022-04-11 11:18:49.124375