Basic Usage
Pagination
Returned data is paginated to a maximum of 10000 items. A paginated response will contain the following:
Key | Type | Description |
|---|---|---|
count | integer | Number of items returned |
next | string | Url to access next set of items |
previous | string | Url to access previous set of items |
results | array | Array of items |
Retries
At Aerobotics we strive for a highly available API, however there are times when there may be momentary operational errors (e.g. 5XX status codes), and, as a result, we recommend using Exponential Backoff when making requests.
This can be achieved by the following sample function:
import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
DEFAULT_RETRIES = 4
DEFAULT_BACKOFF_FACTOR = 0.267
DEFAULT_RETRY_STATUS_FORCE_LIST = (500, 502, 504)
def requests_retry_session(retries=DEFAULT_RETRIES,
backoff_factor=DEFAULT_BACKOFF_FACTOR,
status_forcelist=DEFAULT_RETRY_STATUS_FORCE_LIST,
raise_on_status=False,
session=None):
""" Get a retryable Python requests session
See urllib3.util.retry.Retry for a more detailed description of the
parameters.
>>> from time import time
>>> test_url = "https://httpstat.us/418"
>>>
>>> # Impatient retrying
>>> retry_session_impatient = requests_retry_session(backoff_factor=0.01,
... retries=1,
... status_forcelist=(418,),
... raise_on_status=False)
>>>
>>> start = time()
>>> retry_session_impatient.get(test_url)
<Response [418]>
>>> duration = time() - start
>>> duration < 3
True
>>>
>>> # Patient retrying
>>> retry_session_patient = requests_retry_session(backoff_factor=1.0,
... retries=4,
... status_forcelist=(418,),
... raise_on_status=False)
>>>
>>> start = time()
>>> retry_session_patient.get(test_url)
<Response [418]>
>>> duration = time() - start
>>> duration > 4
True
:param int retries: the number of retries
:param float backoff_factor: the base interval for backing off
:param tuple[int] status_forcelist: a
:param bool raise_on_status: when the session is invoked for a request,
if this is True and the requests fail after the specified number of
retires, raises a urllib3.exceptions.MaxRetryError
:param requests.Session session: the initial session to which to attach
the retrying adapter. If not provided, creates a default
requests.Session instance
:return: the session
:rtype: requests.Session
:raises: urllib3.exceptions.MaxRetryError
"""
session = session or requests.Session()
retry = Retry(total=retries, read=retries, connect=retries,
backoff_factor=backoff_factor,
status_forcelist=status_forcelist,
raise_on_status=raise_on_status)
adapter = HTTPAdapter(max_retries=retry)
session.mount('http://', adapter)
session.mount('https://', adapter)
return sessionUpdated 10 months ago
