Ответ
Для планирования и периодического выполнения задач в Python применяются различные библиотеки и фреймворки, выбор которых зависит от сложности и масштаба системы.
Основные инструменты:
-
APScheduler(Advanced Python Scheduler) Гибкая библиотека для планирования задач внутри приложения. Поддерживает постоянное хранение задач и различные триггеры (интервалы, cron-подобные расписания, конкретные даты). Почему: Идеально подходит для монолитных приложений, где планировщик должен работать в том же процессе.from apscheduler.schedulers.blocking import BlockingScheduler import datetime def my_job(): print(f"Задача выполнена в {datetime.datetime.now()}") scheduler = BlockingScheduler() # Запускать каждые 10 секунд scheduler.add_job(my_job, 'interval', seconds=10) scheduler.start() -
Celery BeatПланировщик для распределенной системы очередей задач Celery. Позволяет запускать задачи по расписанию на любом из воркеров. Почему: Стандарт де-факто для асинхронных и периодических задач в распределенных системах и веб-фреймворках (Django, Flask).# В конфигурации Celery (celery.py) from celery import Celery from celery.schedules import crontab app = Celery('tasks', broker='redis://localhost:6379/0') @app.on_after_configure.connect def setup_periodic_tasks(sender, **kwargs): # Выполнять каждый день в 7:30 утра sender.add_periodic_task( crontab(hour=7, minute=30), my_task.s('hello'), ) -
scheduleПростая и легковесная библиотека с очень читаемым API для базовых задач планирования. Почему: Отличный выбор для простых скриптов и задач, не требующих высокой надежности или постоянного хранения.import schedule import time def job(): print("Я работаю...") schedule.every(10).minutes.do(job) schedule.every().hour.do(job) schedule.every().day.at("10:30").do(job) while True: schedule.run_pending() time.sleep(1) -
Cron(на уровне ОС) Классический системный планировщик. Python-скрипт просто вызывается по расписанию, заданному вcrontab. Почему: Максимально надежный и не зависит от состояния приложения. Хорош для задач обслуживания (бэкапы, очистка логов). -
Airflow/PrefectПолноценные платформы для оркестрации сложных конвейеров данных (DAG), где задачи зависят друг от друга. Почему: Используются для ETL/ELT процессов и сложных рабочих циклов, требующих мониторинга, логирования и перезапусков.