Files
PY_PROXY/app.py
Jonatan Rek f601bb3fc8 Progress
2026-03-02 12:16:00 +01:00

36 lines
1.0 KiB
Python

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)