Files
MoFin/venv/lib/python3.12/site-packages/litellm/passthrough/timeout_utils.py
T
知微 fa45d8aa5f fix: 小果地址统一node122(兼容LAN+EasyTier)
- health_checklist.json: 192.168.1.122→node122
- ocr_client.py: docstring IP→node122
- docs/market-data-requirements.md: IP→node122
- 所有API调用通过ProxyHandler({})绕过系统代理
  Privoxy对node122:18003返回500,直连正常
2026-06-30 02:56:35 +08:00

59 lines
1.8 KiB
Python

import sys
from typing import Optional
DEFAULT_PASS_THROUGH_REQUEST_TIMEOUT_SECONDS = 600.0
def resolve_pass_through_request_timeout(
endpoint_timeout: Optional[float] = None,
) -> float:
"""
Resolve the upstream httpx timeout for pass_through_request.
Precedence: per-endpoint timeout -> general_settings.pass_through_request_timeout -> 600s default.
Uses sys.modules to read general_settings only when the proxy module is already
loaded, avoiding a fastapi transitive import in pure SDK contexts.
"""
if endpoint_timeout is not None:
return float(endpoint_timeout)
try:
proxy_server = sys.modules.get("litellm.proxy.proxy_server")
if proxy_server is not None:
global_timeout = getattr(proxy_server, "general_settings", {}).get(
"pass_through_request_timeout"
)
if global_timeout is not None:
return float(global_timeout)
except Exception:
pass
return DEFAULT_PASS_THROUGH_REQUEST_TIMEOUT_SECONDS
def resolve_llm_passthrough_timeout(
kwargs: Optional[dict] = None,
litellm_params: Optional[dict] = None,
router_timeout: Optional[float] = None,
) -> float:
"""
Resolve upstream httpx timeout for SDK native passthrough (e.g. Bedrock /converse).
Precedence: kwargs timeout/request_timeout -> litellm_params timeout/request_timeout
-> router_timeout -> general_settings.pass_through_request_timeout -> 600s default.
"""
kwargs = kwargs or {}
litellm_params = litellm_params or {}
for source in (kwargs, litellm_params):
for key in ("timeout", "request_timeout"):
val = source.get(key)
if val is not None:
return float(val)
if router_timeout is not None:
return float(router_timeout)
return resolve_pass_through_request_timeout()