Source code for shuup.utils.http

import time

import requests


[docs] def get_client_ip(request): x_forwarded_for = request.META.get("HTTP_X_FORWARDED_FOR") if x_forwarded_for: return x_forwarded_for.split(",")[0] return request.META.get("REMOTE_ADDR")
[docs] def retry_request(n_retries=5, **kwargs): """ Retry a `requests` request with exponential backoff up to `n_retries` times. :param n_retries: Maximum retries :type n_retries: int :param kwargs: Kwargs to pass to `requests.request()`. :return: Requests response. :rtype: requests.Response """ exc = resp = None for n_try in range(n_retries): try: exc = None resp = requests.request(**kwargs) if resp.status_code < 500: return resp except requests.RequestException: pass time.sleep((2 ** (n_try + 1)) * 0.5) if exc: raise exc if resp: resp.raise_for_status() raise Exception("Error! An unknown problem occurred with the request.")