improved trigger code

This commit is contained in:
2024-12-17 20:48:00 +01:00
parent 35c86ffbd3
commit 494ba80e88
6 changed files with 66 additions and 26 deletions
+15 -3
View File
@@ -10,16 +10,28 @@ class TriggerScheduler(AppClass):
super().__init__(_config)
self.tasks: list[Task] = []
async def trigger(self, _trigger: Trigger) -> None:
async def callback_trigger(self, _trigger: Trigger) -> None:
"""Run a callback_trigger with a specific name and check its status at a given interval."""
await _trigger.async_run()
while True:
trigger_state = "active" if _trigger.active else "not active"
self.log.debug("Checking state of trigger %s, state: %s", _trigger.name, trigger_state)
await asyncio.sleep(_trigger.config.interval_in_seconds)
async def run_once_trigger(self, _trigger: Trigger) -> None:
"""Run a trigger with a specific name at a given interval."""
while True:
self.log.debug("Trigger %s is running", _trigger.name)
_trigger.run()
trigger_state = "active" if _trigger.active else "not active"
self.log.debug("Checking state of trigger %s, state: %s", _trigger.name, trigger_state)
await asyncio.sleep(_trigger.config.interval_in_seconds)
def start_trigger(self, _trigger: Trigger) -> None:
"""Start a new trigger."""
task = asyncio.create_task(self.trigger(_trigger))
if _trigger.config.type == "callback":
task = asyncio.create_task(self.callback_trigger(_trigger))
else:
task = asyncio.create_task(self.run_once_trigger(_trigger))
self.tasks.append(task)
async def stop_triggers(self) -> None: