first commit

This commit is contained in:
2026-08-21 08:37:51 -03:00
commit 881a99b0a8
214 changed files with 61407 additions and 0 deletions

42
src/app/livekit/compat.py Normal file
View File

@@ -0,0 +1,42 @@
from __future__ import annotations
from importlib import import_module
def patch_inference_executor_is_alive() -> bool:
"""
Guard LiveKit's health check against a closed multiprocessing.Process.
livekit-agents==1.3.10 calls InferenceProcExecutor.is_alive() from the
aiohttp health route. After shutdown, multiprocessing raises
ValueError("process object is closed"), which turns a normal unhealthy
state into a 500.
"""
try:
module = import_module("livekit.agents.ipc.inference_proc_executor")
except ImportError:
return False
executor_cls = getattr(module, "InferenceProcExecutor", None)
if executor_cls is None:
return False
current_is_alive = getattr(executor_cls, "is_alive", None)
if current_is_alive is None:
return False
if getattr(current_is_alive, "__tim_closed_process_guard__", False):
return False
def _safe_is_alive(self) -> bool:
try:
return current_is_alive(self)
except ValueError as exc:
if str(exc) != "process object is closed":
raise
return False
_safe_is_alive.__tim_closed_process_guard__ = True
executor_cls.is_alive = _safe_is_alive
return True