Планировщик задач на Python
В стандартной библотеке есть встроенный планировщик задач (а чего вообще в ней нет?). Подробно расскажу в другой раз, но в целом он, скажем так, не слишком юзер-френдли.
Поэтому Дэн Бэйдер сделал schedule — «планировщик для людей». Смотрите, какой милый:
import schedule import time def job(): print("I'm working. ") schedule.every().hour.do(job) schedule.every(5).to(10).minutes.do(job) schedule.every().day.at("10:30").do(job) while True: schedule.run_pending() time.sleep(1)
Ноль зависимостей, чистый и великолепно документированный код, примеры на все случаи жизни.
Подписывайтесь на канал, чтобы не пропустить новые заметки 🚀
schedule¶
Python job scheduling for humans. Run Python functions (or any other callable) periodically using a friendly syntax.
- A simple to use API for scheduling jobs, made for humans.
- In-process scheduler for periodic jobs. No extra processes needed!
- Very lightweight and no external dependencies.
- Excellent test coverage.
- Tested on Python 3.7, 3.8, 3.9, 3.10 and 3.11
Example ¶
import schedule import time def job(): print("I'm working. ") schedule.every(10).minutes.do(job) schedule.every().hour.do(job) schedule.every().day.at("10:30").do(job) schedule.every().monday.do(job) schedule.every().wednesday.at("13:15").do(job) schedule.every().day.at("12:42", "Europe/Amsterdam").do(job) schedule.every().minute.at(":17").do(job) while True: schedule.run_pending() time.sleep(1)
When not to use Schedule¶
Let’s be honest, Schedule is not a ‘one size fits all’ scheduling library. This library is designed to be a simple solution for simple scheduling problems. You should probably look somewhere else if you need:
- Job persistence (remember schedule between restarts)
- Exact timing (sub-second precision execution)
- Concurrent execution (multiple threads)
- Localization (workdays or holidays)
Schedule does not account for the time it takes for the job function to execute. To guarantee a stable execution schedule you need to move long-running jobs off the main-thread (where the scheduler runs). See Parallel execution for a sample implementation.
Read More¶
- Installation
- Python version support
- Dependencies
- Installation instructions
- Run a job every x minute
- Use a decorator to schedule a job
- Pass arguments to a job
- Cancel a job
- Run a job once
- Get all jobs
- Cancel all jobs
- Get several jobs, filtered by tags
- Cancel several jobs, filtered by tags
- Run a job at random intervals
- Run a job until a certain time
- Time until the next execution
- Run all jobs now, regardless of their scheduling
- Timezone in .at()
- Daylight Saving Time
- Example
- Customize logging
- AttributeError: ‘module’ object has no attribute ‘every’
- ModuleNotFoundError: No module named ‘schedule’
- ModuleNotFoundError: ModuleNotFoundError: No module named ‘pytz’
- Does schedule support time zones?
- What if my task throws an exception?
- How can I run a job only once?
- How can I cancel several jobs at once?
- How to execute jobs in parallel?
- How to continuously run the scheduler without blocking the main thread?
- Another question?
- Main Interface
- Classes
- Exceptions
- Preparing for development
- Running tests
- Formatting the code
- Compiling documentation
- Publish a new version
Issues¶
If you encounter any problems, please file an issue along with a detailed description. Please also use the search feature in the issue tracker beforehand to avoid creating duplicates. Thank you 😃
About Schedule¶
Inspired by Adam Wiggins’ article “Rethinking Cron” and the clockwork Ruby module.
Distributed under the MIT license. See LICENSE.txt for more information.
Thanks to all the wonderful folks who have contributed to schedule over the years:
- mattss
- mrhwick
- cfrco
- matrixise
- abultman
- mplewis
- WoLfulus
- dylwhich
- fkromer
- alaingilbert
- Zerrossetto
- yetingsky
- schnepp
- grampajoe
- gilbsgilbs
- Nathan Wailes
- Connor Skees
- qmorek
- aisk
- MichaelCorleoneLi
- sijmenhuizenga
- eladbi
- chankeypathak
- vubon
- gaguirregabiria
- rhagenaars
- Skenvy
- zcking
- Martin Thoma
- ebllg
- fredthomsen
- biggerfisch
- sosolidkk
- rudSarkar
- chrimaho
- jweijers
- Akuli
- NaelsonDouglas
- SergBobrovsky
- CPickens42
- emollier
- sunpro108
Как использовать Python для работы с планировщиком задач
Изучите, как использовать Python для работы с планировщиком задач в операционной системе Windows с помощью библиотеки `schedule`.
Python является мощным инструментом для автоматизации и управления различными задачами на вашем компьютере. В этой статье мы рассмотрим, как использовать Python для работы с планировщиком задач на примере операционной системы Windows.
Планировщик задач Windows
Планировщик задач Windows позволяет автоматически запускать программы или скрипты по расписанию. Это полезно для выполнения рутинных задач, таких как резервное копирование данных, обновление баз данных или отправка отчетов.
Библиотека schedule
Для работы с планировщиком задач в Python можно использовать стороннюю библиотеку schedule . Она предоставляет простой и удобный интерфейс для управления расписаниями.
Для установки библиотеки используйте команду:
Создание задачи
Для создания задачи с использованием библиотеки schedule , выполните следующие шаги:
- Импортируйте библиотеку schedule .
- Определите функцию, которая будет выполняться по расписанию.
- Используйте метод schedule.every() для задания интервала выполнения функции.
- Используйте метод schedule.run_pending() в цикле, чтобы проверять и выполнять запланированные задачи.
Ниже приведен пример скрипта, который выполняет функцию hello_world() каждые 10 секунд:
import schedule import time def hello_world(): print("Hello, World!") schedule.every(10).seconds.do(hello_world) while True: schedule.run_pending() time.sleep(1)
Расширенные возможности планирования
Библиотека schedule предоставляет различные методы для более гибкого планирования задач. Некоторые из них:
- every(interval).seconds
- every(interval).minutes
- every(interval).hours
- every().day.at(time)
- every().monday.at(time)
- every().wednesday.at(time)
- every().friday.at(time)
Пример задачи, выполняющейся каждый день в 10:00:
import schedule import time def daily_task(): print("Running daily task") schedule.every().day.at("10:00").do(daily_task) while True: schedule.run_pending() time.sleep(1)
Заключение
Использование Python для работы с планировщиком задач позволяет легко и быстро автоматизировать рутинные процессы на вашем компьютере. Библиотека schedule предоставляет простой и удобный интерфейс для создания и управления задачами. Вам также могут быть интересны другие возможности этой библиотеки, такие как условное выполнение задач или планирование задач с использованием крон-выражений. Удачи в изучении Python! 🐍