Ответ
Для планирования и запуска задач по расписанию в Python применяются как встроенные в язык возможности, так и специализированные библиотеки.
Выбор инструмента зависит от сложности задачи и требований к инфраструктуре.
-
scheduleПростая и легковесная библиотека с читаемым синтаксисом. Идеальна для несложных периодических задач внутри одного процесса. Требует запуска бесконечного цикла для работы.import schedule import time def job(): print("I'm working...") # Запускать задачу каждый день в 10:30 schedule.every().day.at("10:30").do(job) while True: schedule.run_pending() time.sleep(1) -
APScheduler(Advanced Python Scheduler) Мощная и гибкая библиотека, поддерживающая постоянное хранение задач (persistent storage), различные типы триггеров (cron,interval,date) и запуск в фоновом режиме. Подходит для более сложных приложений.from apscheduler.schedulers.blocking import BlockingScheduler def some_job(): print("Executing job") scheduler = BlockingScheduler() # Запускать задачу каждые 2 часа scheduler.add_job(some_job, 'interval', hours=2) scheduler.start() -
Celery BeatПланировщик для Celery — системы распределенных очередей задач. Используется в сложных, высоконагруженных системах для запуска периодических задач на кластере воркеров. -
Системные планировщики (
cron,systemd timers) Наиболее надежный подход для production-окружений. Python-скрипт вызывается внешней утилитой операционной системы. Это разделяет логику приложения и логику планирования, обеспечивая отказоустойчивость.Пример строки для
crontab:# Запускать скрипт каждый день в 3 часа ночи 0 3 * * * /usr/bin/python3 /path/to/my/script.py
Итог: Для простых скриптов подойдет schedule, для сложных приложений — APScheduler, а для распределенных систем — Celery. В production рекомендуется использовать системные планировщики.