Check

Обработка частичных отказов во внешних сервисах

Python Senior Яндекс
Как вы проектируете обёртку над внешним HTTP-сервисом в Python (например, через `httpx`/`requests`), чтобы корректно обрабатывать таймауты, повторные попытки и частичные отказы?
Ответы
Обёртка над HTTP-клиентом
Типичный подход: - установить разумные таймауты (connect/read); - реализовать retry c backoff только для идемпотентных операций; - чётко различать ошибки сети, таймаута и бизнес-ошибки. Пример с `httpx`: ```python import httpx class ApiError(Exception): pass async def fetch_user(client: httpx.AsyncClient, user_id: int): try: resp = await client.get(f'/users/{user_id}', timeout=5.0) except httpx.TimeoutException as exc: raise ApiError('timeout') from exc resp.raise_for_status() return resp.json() ```