CoderCastrov logo
CoderCastrov
Автоматизация

Модуль 'schedule' для автоматизации вашего скрипта на Python.

Модуль 'schedule' для автоматизации вашего скрипта на Python.
просмотров
1 мин чтение
#Автоматизация

Для того чтобы поставить все в нужную перспективу, мне пришлось создать скрипт на 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, вы можете создать уведомления для себя.

Спасибо за чтение!