improved trigger code
This commit is contained in:
+15
-3
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user