Source code for schedium.default
"""
Provides a default, ready-to-use `Scheduler` instance and convenient helper functions for managing scheduled jobs.
It enables both quick scripting and integration with the broader schedium API. For more control, use the `Scheduler` class directly.
Attributes
----------------
- ``default_scheduler``: The default `Scheduler` instance (internal, use helpers below).
- ``run_pending()``: Run all jobs that are scheduled to run at the current time.
- ``add_job(job, trigger=None, name=None)``: Add a job to the default scheduler. Accepts either a `Job` object or a function+trigger pair.
- ``append(job)``: Alias for `add_job` for compatibility with other schedium APIs.
See Also
--------
schedium.Scheduler: for the full Scheduler API.
schedium.Job: for the Job class and related functionality.
schedium.triggers: for available trigger types and how to create them.
Examples
--------
from schedium.default import add_job, run_pending, Job
from schedium import Every
def my_task():
print("Task executed!")
# Add a job using a function and trigger:
add_job(my_task, trigger=Every(unit="second", interval=5))
# You can also add a Job object directly:
job = Job(my_task, trigger=Every(unit="second", interval=10))
add_job(job)
run_pending()
"""
from collections.abc import Callable
from typing import overload
from schedium.job import Job
from schedium.scheduler import Scheduler
from schedium.triggers.base import BaseTrigger
default_scheduler = Scheduler()
[docs]
def run_pending():
default_scheduler.run_pending()
@overload
def add_job(job: Job) -> None: ...
@overload
def add_job(
job: Callable[[], object], trigger: BaseTrigger, name: str | None = None
) -> None: ...
[docs]
def add_job(
job: Job | Callable[[], object],
trigger: BaseTrigger | None = None,
name: str | None = None,
):
if not isinstance(job, Job):
assert trigger is not None
job = Job(job, trigger=trigger, name=name)
default_scheduler.append(job)
append = add_job