mirror of
https://github.com/tiennm99/litellm.git
synced 2026-07-12 21:04:10 +00:00
45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
"""
|
|
``_get_httpx_client`` + ``HTTPHandler.post`` (same pattern as Azure Anthropic sync path:
|
|
``_get_httpx_client(params={"timeout": ...})`` then ``post(..., timeout=...)``).
|
|
|
|
Uses https://httpbin.org/delay/10 with ``timeout=5`` — the handler must raise :class:`~litellm.exceptions.Timeout`
|
|
before the 10s delay completes. Skips if httpbin is unreachable.
|
|
|
|
Lives under ``local_testing`` (not ``make test-unit``).
|
|
"""
|
|
|
|
import json
|
|
import os
|
|
import sys
|
|
|
|
import httpx
|
|
import pytest
|
|
|
|
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "../..")))
|
|
|
|
from litellm.exceptions import Timeout as LitellmTimeout
|
|
from litellm.llms.custom_httpx.http_handler import _get_httpx_client
|
|
|
|
_HTTPBIN_DELAY_S = 10
|
|
_PER_REQUEST_TIMEOUT_S = 5.0
|
|
_CLIENT_DEFAULT_TIMEOUT_S = 60.0
|
|
|
|
|
|
def test_post_delay_exceeds_per_request_timeout_raises():
|
|
try:
|
|
httpx.get("https://httpbin.org/get", timeout=5.0)
|
|
except Exception as e:
|
|
pytest.skip(f"httpbin.org unreachable: {e}")
|
|
|
|
handler = _get_httpx_client(params={"timeout": _CLIENT_DEFAULT_TIMEOUT_S})
|
|
try:
|
|
with pytest.raises(LitellmTimeout):
|
|
handler.post(
|
|
f"https://httpbin.org/delay/{_HTTPBIN_DELAY_S}",
|
|
headers={"content-type": "application/json"},
|
|
data=json.dumps({"model": "claude", "messages": []}),
|
|
timeout=_PER_REQUEST_TIMEOUT_S,
|
|
)
|
|
finally:
|
|
handler.close()
|