Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

classic-scheduler-1.1.0.tar.gz (8.5 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page