Files
mealie/mealie/services/scheduler/scheduler_registry.py
Hayden 530f7c9d6b logging improvements (#2073)
* Scheduled tasks log to Debug, not Info

* Add LOG_LEVEL config to .env

* Update some other log levels and fix typos

* fix logger initializer

---------

Co-authored-by: Jakob Rubin <647846+Grygon@users.noreply.github.com>
2023-01-28 16:54:44 -09:00

60 lines
1.9 KiB
Python

from collections.abc import Callable, Iterable
from mealie.core import root_logger
logger = root_logger.get_logger()
class SchedulerRegistry:
"""
A container class for registering and removing callbacks for the scheduler.
"""
_daily: list[Callable] = []
_hourly: list[Callable] = []
_minutely: list[Callable] = []
@staticmethod
def _register(name: str, callbacks: list[Callable], callback: Iterable[Callable]):
for cb in callback:
logger.debug(f"Registering {name} callback: {cb.__name__}")
callbacks.append(cb)
@staticmethod
def register_daily(*callbacks: Callable):
SchedulerRegistry._register("daily", SchedulerRegistry._daily, callbacks)
@staticmethod
def remove_daily(callback: Callable):
logger.debug(f"Removing daily callback: {callback.__name__}")
SchedulerRegistry._daily.remove(callback)
@staticmethod
def register_hourly(*callbacks: Callable):
SchedulerRegistry._register("daily", SchedulerRegistry._hourly, callbacks)
@staticmethod
def remove_hourly(callback: Callable):
logger.debug(f"Removing hourly callback: {callback.__name__}")
SchedulerRegistry._hourly.remove(callback)
@staticmethod
def register_minutely(*callbacks: Callable):
SchedulerRegistry._register("minutely", SchedulerRegistry._minutely, callbacks)
@staticmethod
def remove_minutely(callback: Callable):
logger.debug(f"Removing minutely callback: {callback.__name__}")
SchedulerRegistry._minutely.remove(callback)
@staticmethod
def print_jobs():
for job in SchedulerRegistry._daily:
logger.debug(f"Daily job: {job.__name__}")
for job in SchedulerRegistry._hourly:
logger.debug(f"Hourly job: {job.__name__}")
for job in SchedulerRegistry._minutely:
logger.debug(f"Minutely job: {job.__name__}")