StartupTask #186

This commit is contained in:
2025-09-25 00:11:26 +02:00
parent 6a3fdb3ebd
commit 15d3c59f02
11 changed files with 58 additions and 27 deletions

View File

@@ -1,6 +1,9 @@
import asyncio
from typing import Callable
from cpl.dependency import get_provider
from cpl.dependency.hosted.startup_task import StartupTask
class Host:
_loop = asyncio.get_event_loop()
@@ -9,8 +12,20 @@ class Host:
def get_loop(cls):
return cls._loop
@classmethod
def run_start_tasks(cls):
provider = get_provider()
tasks = provider.get_services(StartupTask)
for task in tasks:
if asyncio.iscoroutinefunction(task.run):
cls._loop.run_until_complete(task.run())
else:
task.run()
@classmethod
def run(cls, func: Callable, *args, **kwargs):
cls.run_start_tasks()
if asyncio.iscoroutinefunction(func):
return cls._loop.run_until_complete(func(*args, **kwargs))