Creating Your Own Backend
This guide walks you through creating a custom scheduler backend for AtmosPyre's LoggerScheduler.
What You'll Build
A scheduler backend that integrates a scheduling library with AtmosPyre's logging system.
Prerequisites
- Understanding of the Backend Interface
- Familiarity with your chosen scheduling library
- Python 3.10+
Implement the Following Interfaces
Classes
YourBackendTag
Bases: SchedulerDispatchTag
Tag class for [YourBackend] backend type dispatch.
This class inherits from SchedulerDispatchTag and serves as a type marker for multipledispatch, allowing functions to be dispatched to the [YourBackend] backend without requiring specific types for all arguments.
Source code in atmospyre/scheduler/_template/backend_template.py
Functions
_create_scheduler(tag)
Create and return a [YourBackend] scheduler instance.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
tag
|
YourBackendTag
|
Tag for dispatch (not used in implementation). |
required |
Returns:
| Type | Description |
|---|---|
[YourSchedulerType]
|
A new scheduler instance from the [your-library] library. |
Source code in atmospyre/scheduler/_template/backend_template.py
_add_logger(tag, scheduler_instance, logger, interval_seconds)
Add a logger to the [YourBackend]-based scheduler.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
tag
|
YourBackendTag
|
Tag for dispatch (not used in implementation). |
required |
scheduler_instance
|
LoggerScheduler
|
The scheduler instance to add the logger to. |
required |
logger
|
SensorLogger
|
The sensor logger to schedule. |
required |
interval_seconds
|
int
|
Interval in seconds between logger executions. |
required |
Raises:
| Type | Description |
|---|---|
ValueError
|
If the logger is already registered. |
Source code in atmospyre/scheduler/_template/backend_template.py
_remove_logger(tag, scheduler_instance, logger)
Remove a logger from the [YourBackend]-based scheduler.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
tag
|
YourBackendTag
|
Tag for dispatch (not used in implementation). |
required |
scheduler_instance
|
LoggerScheduler
|
The scheduler instance to remove the logger from. |
required |
logger
|
SensorLogger
|
The logger instance to remove. |
required |
Returns:
| Type | Description |
|---|---|
bool
|
True if logger was found and removed, False otherwise. |
Source code in atmospyre/scheduler/_template/backend_template.py
_clear(tag, scheduler_instance)
Remove all loggers and clear the schedule.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
tag
|
YourBackendTag
|
Tag for dispatch (not used in implementation). |
required |
scheduler_instance
|
LoggerScheduler
|
The scheduler instance to clear. |
required |
Source code in atmospyre/scheduler/_template/backend_template.py
_get_status(tag, scheduler_instance)
Get current scheduler status.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
tag
|
YourBackendTag
|
Tag for dispatch (not used in implementation). |
required |
scheduler_instance
|
LoggerScheduler
|
The scheduler instance to get status from. |
required |
Returns:
| Type | Description |
|---|---|
dict
|
Dictionary containing backend name, logger counts, and details. Keys include: - 'backend' (str): Name of the backend ('yourbackend') - 'total_loggers' (int): Number of registered loggers - 'total_jobs' (int): Number of scheduled jobs - 'logger_details' (list): List of dicts with logger information |
Source code in atmospyre/scheduler/_template/backend_template.py
_run_pending(tag, scheduler_instance)
Run all pending jobs manually.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
tag
|
YourBackendTag
|
Tag for dispatch (not used in implementation). |
required |
scheduler_instance
|
LoggerScheduler
|
The scheduler instance to run pending jobs on. |
required |
Source code in atmospyre/scheduler/_template/backend_template.py
_run(tag, scheduler_instance)
Start the scheduler in a blocking loop.
This method blocks indefinitely, running scheduled jobs at the configured check interval. Press Ctrl+C to stop.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
tag
|
YourBackendTag
|
Tag for dispatch (not used in implementation). |
required |
scheduler_instance
|
LoggerScheduler
|
The scheduler instance to run. |
required |