-
-

scheduling#

-

Generic python scheduler.

-
-
-class Scheduler(name)[source]#
-

Bases: object

-

Schedule the execution of coroutines and keep track of them.

-

When instantiating a Scheduler, a name must be provided. This name is used to distinguish the -instance’s log messages from other instances. Using the name of the class or module containing -the instance is suggested.

-

Coroutines can be scheduled immediately with schedule or in the future with schedule_at -or schedule_later. A unique ID is required to be given in order to keep track of the -resulting Tasks. Any scheduled task can be cancelled prematurely using cancel by providing -the same ID used to schedule it.

-

The in operator is supported for checking if a task with a given ID is currently scheduled.

-

Any exception raised in a scheduled task is logged when the task is done.

-
-
-__contains__(task_id)[source]#
-

Return True if a task with the given task_id is currently scheduled.

-
-
Parameters:
-

task_id (Hashable) – The task to look for.

-
-
Return type:
-

bool

-
-
Returns:
-

True if the task was found.

-
-
-
- -
-
-__init__(name)[source]#
-

Initialize a new Scheduler instance.

-
-
Parameters:
-

name (str) – The name of the Scheduler. Used in logging, and namespacing.

-
-
-
- -
-
-cancel(task_id)[source]#
-

Unschedule the task identified by task_id. Log a warning if the task doesn’t exist.

-
-
Parameters:
-

task_id (Hashable) – The task’s unique ID.

-
-
Return type:
-

None

-
-
-
- -
-
-cancel_all()[source]#
-

Unschedule all known tasks.

-
-
Return type:
-

None

-
-
-
- -
-
-schedule(task_id, coroutine)[source]#
-

Schedule the execution of a coroutine.

-

If a task with task_id already exists, close coroutine instead of scheduling it. This -prevents unawaited coroutine warnings. Don’t pass a coroutine that’ll be re-used elsewhere.

-
-
Parameters:
-
    -
  • task_id (Hashable) – A unique ID to create the task with.

  • -
  • coroutine (Coroutine) – The function to be called.

  • -
-
-
Return type:
-

None

-
-
-
- -
-
-schedule_at(time, task_id, coroutine)[source]#
-

Schedule coroutine to be executed at the given time.

-

If time is timezone aware, then use that timezone to calculate now() when subtracting. -If time is naïve, then use UTC.

-

If time is in the past, schedule coroutine immediately.

-

If a task with task_id already exists, close coroutine instead of scheduling it. This -prevents unawaited coroutine warnings. Don’t pass a coroutine that’ll be re-used elsewhere.

-
-
Parameters:
-
    -
  • time (datetime) – The time to start the task.

  • -
  • task_id (Hashable) – A unique ID to create the task with.

  • -
  • coroutine (Coroutine) – The function to be called.

  • -
-
-
Return type:
-

None

-
-
-
- -
-
-schedule_later(delay, task_id, coroutine)[source]#
-

Schedule coroutine to be executed after delay seconds.

-

If a task with task_id already exists, close coroutine instead of scheduling it. This -prevents unawaited coroutine warnings. Don’t pass a coroutine that’ll be re-used elsewhere.

-
-
Parameters:
-
    -
  • delay (Union[int, float]) – How long to wait before starting the task.

  • -
  • task_id (Hashable) – A unique ID to create the task with.

  • -
  • coroutine (Coroutine) – The function to be called.

  • -
-
-
Return type:
-

None

-
-
-
- -
- -
-
-create_task(coro, *, suppressed_exceptions=(), event_loop=None, **kwargs)[source]#
-

Wrapper for creating an asyncio.Task which logs exceptions raised in the task.

-

If the event_loop kwarg is provided, the task is created from that event loop, -otherwise the running loop is used.

-
-
Parameters:
-
-
-
Returns:
-

The wrapped task.

-
-
Return type:
-

asyncio.Task

-
-
-
- -
- -