Spaces:
Runtime error
Runtime error
File size: 968 Bytes
76b253b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# PATH: bot/integrations/http.py
import httpx
from bot.core.settings import HTTP_TIMEOUT_SEC, MAX_RETRIES
_async_client: httpx.AsyncClient | None = None
def get_client() -> httpx.AsyncClient:
global _async_client
if _async_client is None:
_async_client = httpx.AsyncClient(timeout=HTTP_TIMEOUT_SEC, follow_redirects=True)
return _async_client
async def post_json(url: str, headers: dict, payload: dict) -> dict:
c = get_client()
last_err = None
for _ in range(MAX_RETRIES + 1):
try:
r = await c.post(url, headers=headers, json=payload)
data = r.json() if r.headers.get("content-type","").startswith("application/json") else {}
if r.status_code >= 400:
return {"ok": False, "status": r.status_code, "data": data, "text": r.text[:300]}
return data
except Exception as e:
last_err = e
return {"ok": False, "status": 0, "err": str(last_err)} |