python requests.request retry

Python Requests Request Retry

When working with APIs or making HTTP requests, sometimes you might not receive a response due to network issues, server errors or other factors. In such cases, it is useful to retry the request after a certain amount of time. Python Requests module provides functionality for retrying requests.

How to Retry Requests Using Python Requests

Python requests module provides a Session object that allows you to make HTTP requests. You can configure the retry behavior of the session object using Retry object from requests.packages.urllib3.util.retry module.

Here is an example:


import requests
from requests.packages.urllib3.util.retry import Retry
from requests.adapters import HTTPAdapter

session = requests.Session()

retry = Retry(total=5, backoff_factor=0.1, status_forcelist=[ 500, 502, 503, 504 ])

adapter = HTTPAdapter(max_retries=retry)

session.mount('http://', adapter)
session.mount('https://', adapter)

response = session.get('https://example.com')

In this example, a session object is created and a Retry object is created with parameters total, backoff_factor, and status_forcelist.

  • total: Maximum number of retries before giving up.
  • backoff_factor: A factor applied to the backoff time between retries.
  • status_forcelist: A list of HTTP status codes that should trigger a retry.

An HTTPAdapter object is created with the Retry object and is mounted to both http and https protocols. Finally, a GET request is made using the session object.

Other Approaches to Retry Requests

Another approach to retry requests is to use a library like tenacity which allows you to configure the retry behavior more easily. Here is an example:


import requests
from tenacity import retry, stop_after_attempt, wait_fixed

@retry(stop=stop_after_attempt(5), wait=wait_fixed(0.1))
def get_example():
    response = requests.get('https://example.com')
    response.raise_for_status()
    return response

response = get_example()

In this example, the get_example function is decorated with the @retry decorator from tenacity library. The stop_after_attempt and wait_fixed functions are used to configure the retry behavior. The get_example function makes a GET request to the specified URL and raises an exception if the response status code is not 2xx.

There are other libraries like retrying, backoff, retry, etc. available for retrying requests in Python.