Classic Scheduler
Предоставляет простой in-process планировщик, способный выполнять задачи по cron-расписанию, периодически и отложенно.
Пример:
from classic.scheduler import Scheduler
def func():
print('Hello world!')
scheduler = Scheduler()
scheduler.with_delay(1, func)
scheduler.by_period(5, func)
scheduler.by_cron('* * * * *', func)
scheduler.run()
# Hello world!
# Hello world!
# Hello world!
# ...
Многопоточность
У Scheduler есть параметр в конструкторе - workers_num, по умолчанию равный 1. Этот параметр задает количество потоков в ThreadPool, используемому под капотом. При значении workers_num = 0 задачи будут выполняться в том же потоке, что и планировщик, последовательно.
Также у планировщика есть 2 способа запуска - методы .run() и .start().
Метод .run() вводит поток в вечный цикл, в котором происходит управление задачами по расписанию.
Метод .start() запускает фоновый поток, в котором выполняется .run(). Также планировщик имеет метод .stop(), используя который можно отправить сообщение об остановке. Также .stop имеет параметры block и timeout, позволяющие остановить текущий поток в ожидании завершения фонового потока, и установить время ожидания остановки.
Метод .join() блокирует текущий поток в ожидании завершения фонового потока
Интеграция с classic-components
Если используется совместно с classic-components, то можно использовать декораторы by_period и by_cron на классах с логикой, чтобы упростить регистрацию задач:
from classic.components import component
from classic.scheduler import Scheduler, by_period, by_cron
@component
def SomeLogic:
@by_period(1)
def need_to_call_periodically(self):
print('Hello')
@by_cron('* * * * *')
def need_to_call_by_schedule(self):
print('Hi')
scheduler = Scheduler()
some_logic = SomeLogic(scheduler=scheduler) # Регистрация произойдет при инстанцировании компонента
scheduler.run()
# Hello
# Hi
Отмена вызова (удаление задачи)
Если расписание задач планируется динамически менять, например, удалить ранее
созданную задачу, то при создании задачи в методах необходимо
указать атрибут task_name. Пример:
from classic.scheduler import Scheduler
scheduler = Scheduler()
scheduler.by_period(1, lambda: print('hello'), task_name='periodic task')
scheduler.cancel('periodic task')
Тогда в дальнейшем вы можете отменить запланированные запуски задач через:
scheduler.cancel('periodic task')
Параметризация вызываемой функции
Планировщик может запускать и функции с аргументами.
Аргументы передаются через атрибуты args и kwargs.
Отдельно заметим, что вызываемые объекты так же могут
быть акторами, как в примере ниже:
from classic.scheduler import Scheduler
def print_sum(a, b):
print(f'a + b = {a+b}')
scheduler = Scheduler()
scheduler.run()
scheduler.by_period(
2,
print_sum,
args=(2, 6),
)
# a + b = 8
# a + b = 8
# a + b = 8
# ...
Типы задач
После создания экземпляра планировщика нужно добавить в него задач.
Планирование и выполнение задач начнется только после запуска метода run().
Отметим, что добавлять задачи в планировщик можно и после вызова метода run().
Планировщик поддерживает три типа задач:
Одноразовая отложенная задача
Создается через вызов метода планировщика with_delay.
Задача будет выполнена ровно один раз. Ее вызов отложен на delay указанный
либо в секундах в float либо в timedelta.
Переодическая задача
Создается через вызов метода планировщика by_period. Задача выполнится
в первый раз, затем она будет выполнятmся через период periodic,
заданный либо в секундах в float либо в timedelta.
Задача по расписанию
Создается через вызов метода планировщика by_cron.
Задача вызов который задается в формате CRON строкой.
Metadata
Release files for classic-scheduler 1.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| classic_scheduler-1.4.1.tar.gz | 10.1 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| classic_scheduler-1.4.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 18.9 kB
Release files / classic_scheduler-1.4.1.tar.gz
| Download URL | classic_scheduler-1.4.1.tar.gz |
|---|---|
| Size | 10.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
012032ab9e6f1a428aebe8efbe4c8602d359724f8a807ca3d892cf3da69a6c6e
|
|
BLAKE2b-256 checksum How to use checksums |
92832993637d7ccb4d9d49038348ab6fa50d2a7598f2591d561571de818977e6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 5, 2025.
Transparency logRelease files / classic_scheduler-1.4.1-py3-none-any.whl
| Download URL | classic_scheduler-1.4.1-py3-none-any.whl |
|---|---|
| Size | 8.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ce3b51d36c61e57e7dd0d5c024d804270fd2881edd1ed97353f654d9b6dcf0f7
|
|
BLAKE2b-256 checksum How to use checksums |
7f9990722bb927ad7f93f68c3b2e252a81aa8461f92010dc6f727b9e22cc7998
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 5, 2025.
Transparency logSecurity for classic-scheduler 1.4.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for classic_scheduler-1.4.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 5, 2025.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.