mirror of
https://github.com/kennethreitz/requests3.git
synced 2026-06-05 23:10:16 +00:00
c2aeaa3959
Modifies the timeout interface to also accept a tuple (connect, read) which would be used to set individual connect and read timeouts for Requests. Adds Advanced documentation explaining the interface and providing guidance for timeout values.
91 lines
2.2 KiB
Python
91 lines
2.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
requests.exceptions
|
|
~~~~~~~~~~~~~~~~~~~
|
|
|
|
This module contains the set of Requests' exceptions.
|
|
|
|
"""
|
|
from .packages.urllib3.exceptions import HTTPError as BaseHTTPError
|
|
|
|
|
|
class RequestException(IOError):
|
|
"""There was an ambiguous exception that occurred while handling your
|
|
request."""
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
"""
|
|
Initialize RequestException with `request` and `response` objects.
|
|
"""
|
|
response = kwargs.pop('response', None)
|
|
self.response = response
|
|
self.request = kwargs.pop('request', None)
|
|
if (response is not None and not self.request and
|
|
hasattr(response, 'request')):
|
|
self.request = self.response.request
|
|
super(RequestException, self).__init__(*args, **kwargs)
|
|
|
|
|
|
class HTTPError(RequestException):
|
|
"""An HTTP error occurred."""
|
|
|
|
|
|
class ConnectionError(RequestException):
|
|
"""A Connection error occurred."""
|
|
|
|
|
|
class ProxyError(ConnectionError):
|
|
"""A proxy error occurred."""
|
|
|
|
|
|
class SSLError(ConnectionError):
|
|
"""An SSL error occurred."""
|
|
|
|
|
|
class Timeout(RequestException):
|
|
"""The request timed out.
|
|
|
|
Catching this error will catch both :exc:`ConnectTimeout` and
|
|
:exc:`ReadTimeout` errors.
|
|
"""
|
|
|
|
|
|
class ConnectTimeout(Timeout):
|
|
""" The request timed out while trying to connect to the server.
|
|
|
|
Requests that produce this error are safe to retry
|
|
"""
|
|
|
|
|
|
class ReadTimeout(Timeout):
|
|
"""The server did not send any data in the allotted amount of time."""
|
|
|
|
|
|
class URLRequired(RequestException):
|
|
"""A valid URL is required to make a request."""
|
|
|
|
|
|
class TooManyRedirects(RequestException):
|
|
"""Too many redirects."""
|
|
|
|
|
|
class MissingSchema(RequestException, ValueError):
|
|
"""The URL schema (e.g. http or https) is missing."""
|
|
|
|
|
|
class InvalidSchema(RequestException, ValueError):
|
|
"""See defaults.py for valid schemas."""
|
|
|
|
|
|
class InvalidURL(RequestException, ValueError):
|
|
""" The URL provided was somehow invalid. """
|
|
|
|
|
|
class ChunkedEncodingError(RequestException):
|
|
"""The server declared chunked encoding but sent an invalid chunk."""
|
|
|
|
|
|
class ContentDecodingError(RequestException, BaseHTTPError):
|
|
"""Failed to decode response content"""
|