Provides scheduler
Project description
Classic Scheduler
Планировщик
Данная библиотека является продолжением библиотеки акторов classic actors
. И, как следствие, она зависит от библиотеки акторов.
Планировщик - это актор, который вызывает функции по расписанию.
Рассмотрим пример использования библиотеки:
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!
# ...
Отмена вызова (удаление задачи)
Если расписание задач планируется динамически менять, например, удалить ранее созданную задачу, то при создании задачи в методах необходимо указать атрибут task_name
. Пример:
scheduler = Scheduler()
scheduler.by_period(1, func, task_name='periodic task')
Тогда в дальнейшем вы можете отменить запланированные запуски задач через:
scheduler.cancel('periodic task')
Параметризация вызываемой функции
Планировщик может запускать и функции с аргументами. Аргументы передаются через атрибуты args
и kwargs
. Отдельно заметим, что вызываемые объекты так же могут быть акторами, как в примере ниже:
class SomeActor(Actor):
@Actor.method
def func(self, a, b):
print('a + b =', a + b)
some_actor = SomeActor()
some_actor.run()
scheduler = Scheduler()
scheduler.run()
scheduler.by_period(
2,
some_actor.func,
args=(2, 6),
task_name='some_actor_task',
)
# a + b = 8
# a + b = 8
# a + b = 8
# ...
Типы задач
После создания экземпляра планировщика нужно добавить в него задач. Планирование и выполнение задач начнется только после запуска метода run()
. Отметим, что добавлять задачи в планировщик можно и после вызова метода run()
.
Планировщик поддерживает три типы задач:
Одноразовая отложенная задача
Создается через вызов метода планировщика with_delay
. Задача будет выполнена ровно один раз. Ее вызов отложен на delay
указанный либо в секундах в float
либо в timedelta
.
Переодическая задача
Создается через вызов метода планировщика by_period
. Задача выполнится в первый раз, затем она будет выполняется через период periodic
заданный либо в секундах в float
либо в timedelta
.
Задача по расписанию
Создается через вызов метода планировщика by_cron
. Задача вызов который задается в формате CRON
строкой.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.