Модуль 'schedule' для автоматизации вашего скрипта на Python.
Table Of Content
Для того чтобы поставить все в нужную перспективу, мне пришлось создать скрипт на Python, который извлекает данные с веб-сайта, моделирует их и преобразует в CSV-файл. Скрипт должен выполняться ежедневно, так как данные обновляются ежедневно. Если вам интересно, вы можете посмотреть весь скрипт здесь. Однако, в этом блоге фокус будет на автоматизации, а не на самом скрипте.
После нескольких неудачных попыток автоматизировать процесс, я обнаружил модуль Python schedule. Есть простое решение для каждой задачи автоматизации!
Вот небольшая иллюстрация (взята с официальной страницы модуля):
import schedule
import time
def job():
print("Я работаю...")
schedule.every(10).seconds.do(job)
schedule.every(10).minutes.do(job)
Это практически очевидно. В строке присутствует schedule.every(10).seconds, которая устанавливает выполнение функции job() каждые десять секунд.
Чтобы вернуться к моему проекту и решению, я использовал модуль schedule следующим образом:
# Запуск скрипта
# run_script - это функция, которую я хочу запустить
schedule.every().day.at('05:00').do(run_script)
while True:
schedule.run_pending()
time.sleep(1)
Для завершения задачи мне пришлось создать бесконечный цикл While, который будет выполняться каждую секунду. Вот строка, которая вызывает вопросы: sch.every().day.at('05:00'). Эта команда инициализирует время и частоту извлечения, но ее необходимо "вызвать" с помощью sch.run_pending().
И вот! Каждый день в 5 утра мой скрипт будет выполняться и производить извлечение данных.
Преимущества:
- Довольно простое решение для задачи автоматизации
- Практично, если скрипт реализован на сервере (что я и делаю для этого проекта), так как он будет выполняться непрерывно там.
Недостаток:
- Если скрипт не запущен, когда вы запускаете его локально, автоматизация не будет работать. Вы можете использовать cron или диспетчер задач в Windows для выполнения того же самого, если планируете закрыть скрипт после выполнения.
Также, с использованием модулей schedule и plyer, вы можете создать уведомления для себя.
Спасибо за чтение!