Files
PY_PROXY/app.py
Jonatan Rek db0853886f progress
2026-03-02 14:51:15 +01:00

38 lines
1.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import asyncio
import httpx
from config import load_config
from docker_manager import DockerManager
from middleware import ProxyMiddleware
# Single shared HTTP client reuses TCP connections via connection pooling.
_http_client = httpx.AsyncClient(timeout=30.0)
docker_mgr = DockerManager()
routes = load_config("config.yml")
async def _lifespan(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 _http_client.aclose()
await send({"type": "lifespan.shutdown.complete"})
return
app = ProxyMiddleware(_lifespan, routes=routes, docker=docker_mgr, http_client=_http_client)