Исключения¶
AvitoError — базовый тип ошибок SDK. Специализированные исключения отражают
класс сбоя: аутентификация, авторизация, validation, rate limit, transport и
ошибки upstream API.
Диагностические поля¶
Каждое публичное исключение сохраняет безопасные диагностические данные:
| Поле | Назначение |
|---|---|
operation |
Имя SDK-операции, во время которой возникла ошибка |
status / status_code |
HTTP-статус upstream-ответа, если он был получен |
error_code |
Код ошибки из тела upstream-ответа, если API его вернул |
message |
Читаемое сообщение ошибки |
details |
Структурированные подробности из details, fields, errors или violations |
retry_after |
Количество секунд до повтора для 429, если есть Retry-After |
request_id |
Идентификатор upstream-запроса, если API его вернул |
attempt |
Номер retry-попытки, если он доступен transport-слою |
method |
HTTP-метод запроса |
endpoint |
Путь endpoint без OAuth-секретов и приватных headers |
Секреты в payload, headers и metadata редактируются через
sanitize_metadata().
Пример обработки rate limit:
from avito.core.exceptions import RateLimitError
try:
avito.ad_stats(user_id=7).get_item_stats(item_ids=[101])
except RateLimitError as exc:
print(exc.operation)
print(exc.status)
print(exc.error_code)
print(exc.retry_after)
print(exc.request_id)
Иерархия¶
Иерархия исключений SDK Avito.
AvitoError
dataclass
¶
AvitoError(
message: str,
status_code: int | None = None,
error_code: str | None = None,
operation: str | None = None,
details: object | None = None,
retry_after: float | None = None,
request_id: str | None = None,
metadata: Mapping[str, object] = dict(),
payload: object | None = None,
headers: Mapping[str, str] | None = None,
)
Bases: Exception
Базовое исключение SDK с безопасными диагностическими метаданными.
TransportError
dataclass
¶
TransportError(
message: str,
status_code: int | None = None,
error_code: str | None = None,
operation: str | None = None,
details: object | None = None,
retry_after: float | None = None,
request_id: str | None = None,
metadata: Mapping[str, object] = dict(),
payload: object | None = None,
headers: Mapping[str, str] | None = None,
)
AuthenticationError
dataclass
¶
AuthenticationError(
message: str,
status_code: int | None = None,
error_code: str | None = None,
operation: str | None = None,
details: object | None = None,
retry_after: float | None = None,
request_id: str | None = None,
metadata: Mapping[str, object] = dict(),
payload: object | None = None,
headers: Mapping[str, str] | None = None,
)
AuthorizationError
dataclass
¶
AuthorizationError(
message: str,
status_code: int | None = None,
error_code: str | None = None,
operation: str | None = None,
details: object | None = None,
retry_after: float | None = None,
request_id: str | None = None,
metadata: Mapping[str, object] = dict(),
payload: object | None = None,
headers: Mapping[str, str] | None = None,
)
ValidationError
dataclass
¶
ValidationError(
message: str,
status_code: int | None = None,
error_code: str | None = None,
operation: str | None = None,
details: object | None = None,
retry_after: float | None = None,
request_id: str | None = None,
metadata: Mapping[str, object] = dict(),
payload: object | None = None,
headers: Mapping[str, str] | None = None,
)
ConfigurationError
dataclass
¶
ConfigurationError(
message: str,
status_code: int | None = None,
error_code: str | None = None,
operation: str | None = None,
details: object | None = None,
retry_after: float | None = None,
request_id: str | None = None,
metadata: Mapping[str, object] = dict(),
payload: object | None = None,
headers: Mapping[str, str] | None = None,
)
RateLimitError
dataclass
¶
RateLimitError(
message: str,
status_code: int | None = None,
error_code: str | None = None,
operation: str | None = None,
details: object | None = None,
retry_after: float | None = None,
request_id: str | None = None,
metadata: Mapping[str, object] = dict(),
payload: object | None = None,
headers: Mapping[str, str] | None = None,
)
ConflictError
dataclass
¶
ConflictError(
message: str,
status_code: int | None = None,
error_code: str | None = None,
operation: str | None = None,
details: object | None = None,
retry_after: float | None = None,
request_id: str | None = None,
metadata: Mapping[str, object] = dict(),
payload: object | None = None,
headers: Mapping[str, str] | None = None,
)
UnsupportedOperationError
dataclass
¶
UnsupportedOperationError(
message: str,
status_code: int | None = None,
error_code: str | None = None,
operation: str | None = None,
details: object | None = None,
retry_after: float | None = None,
request_id: str | None = None,
metadata: Mapping[str, object] = dict(),
payload: object | None = None,
headers: Mapping[str, str] | None = None,
)
Bases: AvitoError
Операция не поддерживается публичным Avito API или данным endpoint (HTTP 405, 501).
UpstreamApiError
dataclass
¶
UpstreamApiError(
message: str,
status_code: int | None = None,
error_code: str | None = None,
operation: str | None = None,
details: object | None = None,
retry_after: float | None = None,
request_id: str | None = None,
metadata: Mapping[str, object] = dict(),
payload: object | None = None,
headers: Mapping[str, str] | None = None,
)
NotFoundError
dataclass
¶
NotFoundError(
message: str,
status_code: int | None = None,
error_code: str | None = None,
operation: str | None = None,
details: object | None = None,
retry_after: float | None = None,
request_id: str | None = None,
metadata: Mapping[str, object] = dict(),
payload: object | None = None,
headers: Mapping[str, str] | None = None,
)
ClientError
dataclass
¶
ClientError(
message: str,
status_code: int | None = None,
error_code: str | None = None,
operation: str | None = None,
details: object | None = None,
retry_after: float | None = None,
request_id: str | None = None,
metadata: Mapping[str, object] = dict(),
payload: object | None = None,
headers: Mapping[str, str] | None = None,
)
ServerError
dataclass
¶
ServerError(
message: str,
status_code: int | None = None,
error_code: str | None = None,
operation: str | None = None,
details: object | None = None,
retry_after: float | None = None,
request_id: str | None = None,
metadata: Mapping[str, object] = dict(),
payload: object | None = None,
headers: Mapping[str, str] | None = None,
)
ResponseMappingError
dataclass
¶
ResponseMappingError(
message: str,
status_code: int | None = None,
error_code: str | None = None,
operation: str | None = None,
details: object | None = None,
retry_after: float | None = None,
request_id: str | None = None,
metadata: Mapping[str, object] = dict(),
payload: object | None = None,
headers: Mapping[str, str] | None = None,
)
sanitize_metadata ¶
Удаляет секреты из диагностических метаданных исключения.