import asyncio from config import load_config from docker_manager import DockerManager from middleware import ProxyMiddleware docker_mgr = DockerManager() routes = load_config("config.yml") class _LifespanApp: """Minimal ASGI app that only handles lifespan events.""" async def __call__(self, scope, receive, send): if scope["type"] != "lifespan": return task = None while True: event = await receive() if event["type"] == "lifespan.startup": task = asyncio.create_task(docker_mgr.idle_watcher()) await send({"type": "lifespan.startup.complete"}) elif event["type"] == "lifespan.shutdown": if task: task.cancel() try: await task except asyncio.CancelledError: pass await send({"type": "lifespan.shutdown.complete"}) return app = ProxyMiddleware(_LifespanApp(), routes=routes, docker=docker_mgr)