Python: запуск скриптов через собственный планировщик либо через crontab

Запуск 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

 

 

Рейтинг
( 11 оценок, среднее 3.18 из 5 )
Понравилась статья? Поделиться с друзьями: