Skip to main content

Simple in-process scheduler

Project description

Classic 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!
# ...

Отмена вызова (удаление задачи)

Если расписание задач планируется динамически менять, например, удалить ранее созданную задачу, то при создании задачи в методах необходимо указать атрибут 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.3.0.tar.gz (9.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

classic_scheduler-1.3.0-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

Details for the file classic_scheduler-1.3.0.tar.gz.

File metadata

  • Download URL: classic_scheduler-1.3.0.tar.gz
  • Upload date:
  • Size: 9.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.13

File hashes

Hashes for classic_scheduler-1.3.0.tar.gz
Algorithm Hash digest
SHA256 8500b4e1ba5306d78b21bb6ba3d3ada46ad327fb1ed48eeee747cd36c7aa5162
MD5 a5afbc92a18b77df779e502d7d50ba6a
BLAKE2b-256 8492eb3738a07069d7ba442c8912f7536f5fe780ab43c8a6a76a608530f2f5b6

See more details on using hashes here.

File details

Details for the file classic_scheduler-1.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for classic_scheduler-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5bf069a1f74aeeae259ad94fbb4e8bd478ed59073859c691b43d6a8aa0323704
MD5 81d03d68e2a580abbe085515638f72f2
BLAKE2b-256 9ac8d034f15fd3ad9b6596f22ddd7f816c92f0e07076afe7fe0348d56910b339

See more details on using hashes here.

Supported by

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