httpx
Dispatch provides a built-in integration with httpx, offering proper error handling out of the box. It’s enabled by default and it takes no extra code to set it up.
Exception handling
HTTPStatusError
Depending on the status_code
attribute, a different Dispatch behavior is applied.
HTTP status code | Description | Dispatch status |
---|---|---|
1xx | Informational | Status.PERMANENT_ERROR |
2xx | Successful | Status.OK |
3xx | Redirection | Status.PERMANENT_ERROR |
3xx | Redirection | Status.PERMANENT_ERROR |
4xx | Client error | Status.PERMANENT_ERROR |
400 | Bad request | Status.INVALID_ARGUMENT |
401 | Unauthorized | Status.UNAUTHENTICATED |
403 | Forbidden | Status.PERMISSION_DENIED |
404 | Not found | Status.NOT_FOUND |
408 | Request timeout | Status.TIMEOUT |
429 | Too many requests | Status.THROTTLED |
5xx | Server error | Status.TEMPORARY_ERROR |
501 | Not implemented | Status.PERMANENT_ERROR |
InvalidURL
Returns Status.INVALID_ARGUMENT
.
UnsupportedProtocol
Returns Status.INVALID_ARGUMENT
.
TimeoutException
Returns Status.TIMEOUT
.
HTTPError
Returns Status.TEMPORARY_ERROR
, unless exception is HTTPStatusError
, InvalidURL
, UnsupportedProtocol
or TimeoutException
, since HTTPError
is a parent class of these. Learn more in httpx documentation.
StreamError
Returns Status.TEMPORARY_ERROR
CookieConflict
Returns Status.TEMPORARY_ERROR
.
Response handling
If a function returns httpx.Response
instance, Dispatch looks at the status_code
attribute and determines behavior the same way as HTTPStatusError
exception.