11. Автоматизация и планировщик задач
Автоматизация и планировщик задач
Описание: В этом уроке мы научимся запускать Python-скрипты автоматически — по расписанию. Это основа автоматизации: от напоминаний и резервного копирования до сбора данных и рассылок.1. Зачем нужна автоматизация
Python отлично подходит для выполнения повторяющихся задач:- Отправка отчётов или e-mail каждый день.
- Резервное копирование данных по расписанию.
- Проверка API или обновление сайта каждые N минут.
- Мониторинг логов и автоматические уведомления.
2. Планировщик внутри Python — библиотека schedule
Библиотека schedule позволяет выполнять действия с заданным интервалом без внешних инструментов.Установите библиотеку один раз с помощью pip:
pip install schedule
3. Пример простого планировщика
Создадим скрипт, который выводит напоминание каждый час.
import schedule
import timedef remind():
print('Не забудьте сделать перерыв!')
# каждые 60 минут
schedule.every(1).hours.do(remind)
print('Планировщик запущен. Нажмите Ctrl+C для выхода.')
while True:
schedule.run_pending()
time.sleep(1)
Каждую минуту (или час) программа проверяет, пора ли выполнить задачу, и вызывает нужную функцию.
4. Пример с несколькими задачами
Можно добавить несколько заданий:
def backup():
print('Резервное копирование завершено.')def check_news():
print('Проверяем новости...')
schedule.every().day.at('09:00').do(backup)
schedule.every(30).minutes.do(check_news)
while True:
schedule.run_pending()
time.sleep(1)
Задачи можно задавать по дням недели, времени суток или интервалам.
5. Запуск скрипта в фоне
Когда ваш скрипт готов, его можно запускать:- Через консоль — просто python main.py.
- В фоне с помощью nohup python script.py & (Linux).
- Через диспетчер задач или cron — чтобы запускался автоматически.
6. Планировщик cron (Linux / macOS)
Если вы работаете на Linux или macOS — используйте cron. Это системный планировщик.
# Открыть crontab
crontab -e# Пример: запуск каждый день в 8:00
0 8 * * * /usr/bin/python3 /home/user/backup.py
Формат cron:
- Первая цифра — минуты (0–59).
- Вторая — часы (0–23).
- Далее — день, месяц и день недели.
7. Планировщик на Windows (Task Scheduler)
Если вы на Windows — используйте «Планировщик заданий»:- Откройте меню «Пуск» → «Планировщик заданий».
- Создайте задачу → «Создать простую задачу».
- Выберите интервал (ежедневно, еженедельно и т.д.).
- Укажите путь к Python и к вашему скрипту.
Пример:
C:\\Python312\\python.exe C:\\scripts\\auto_backup.py
8. Пример реального сценария
Создадим простую автоматическую систему резервного копирования.
import schedule
import shutil
import datetime
import timeSRC = 'data/'
DST = 'backup/'
def backup():
date = datetime.datetime.now().strftime('%Y-%m-%d_%H-%M')
target = f'{DST}backup_{date}'
shutil.make_archive(target, 'zip', SRC)
print(f'Резервная копия сохранена: {target}.zip')
schedule.every().day.at('02:00').do(backup)
while True:
schedule.run_pending()
time.sleep(60)
Каждый день в 2:00 утра создаётся архив папки `data/` в виде ZIP-файла с датой.
9. Советы по автоматизации
- Добавьте логирование (через модуль logging) — чтобы сохранять отчёты о выполнении.
- Оборачивайте задачи в try/except, чтобы программа не падала при ошибках.
- Используйте venv — изолированное окружение для зависимостей.
- Если нужно, добавьте уведомления (email, Telegram-бот) после выполнения задачи.
10. Мини-проект: Автоматическое напоминание
Создадим маленький бот-напоминатель на базе schedule.
import schedule
import timereminders = [
('08:00', 'Доброе утро! Время проверить задачи.'),
('13:00', 'Обеденный перерыв!'),
('18:00', 'Отдохните и подвигайтесь!')
]
for t, msg in reminders:
schedule.every().day.at(t).do(lambda m=msg: print(m))
print('Напоминатель запущен.')
while True:
schedule.run_pending()
time.sleep(1)
Итоги урока
Теперь вы умеете:- Планировать автоматические задачи с помощью schedule.
- Запускать Python-скрипты по расписанию через cron или Task Scheduler.
- Создавать резервные копии и напоминания автоматически.
- Применять автоматизацию в реальных проектах.