Skip to content

Commit

Permalink
requests: add request retries
Browse files Browse the repository at this point in the history
  • Loading branch information
murilohns committed Apr 30, 2020
1 parent d1a06b3 commit 66575f6
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 20 deletions.
26 changes: 6 additions & 20 deletions pagarme/resources/handler_request.py
Original file line number Diff line number Diff line change
@@ -1,23 +1,9 @@
import requests
from pagarme import sdk
from .requests_retry import requests_retry_session

TEMPORARY_COMPANY = 'https://api.pagar.me/1/companies/temporary'

KEYS = {}


def headers():
_headers = {
'User-Agent': 'pagarme-python/{}'.format(sdk.VERSION),
'X-PagarMe-User-Agent': 'pagarme-python/{}'.format(sdk.VERSION)
}
return _headers


session = requests.Session()
session.headers.update(headers())


def validate_response(pagarme_response):
if pagarme_response.ok:
return pagarme_response.json()
Expand All @@ -26,7 +12,7 @@ def validate_response(pagarme_response):


def create_temporary_company():
company = session.post(TEMPORARY_COMPANY)
company = requests_retry_session().post(TEMPORARY_COMPANY)
valid_company = validate_response(company)
return valid_company

Expand All @@ -45,25 +31,25 @@ def authentication_key(api_key=None, company_temporary=False):

def delete(end_point, data = {}):
data['api_key'] = KEYS['api_key']
pagarme_response = session.delete(end_point, json=data)
pagarme_response = requests_retry_session().delete(end_point, json=data)
return validate_response(pagarme_response)


def get(end_point, data = {}):
data['api_key'] = KEYS['api_key']
pagarme_response = session.get(end_point, json=data)
pagarme_response = requests_retry_session().get(end_point, json=data)
return validate_response(pagarme_response)


def post(end_point, data={}):
data['api_key'] = KEYS['api_key']
pagarme_response = session.post(end_point, json=data)
pagarme_response = requests_retry_session().post(end_point, json=data)
return validate_response(pagarme_response)


def put(end_point, data = {}):
data['api_key'] = KEYS['api_key']
pagarme_response = session.put(end_point, json=data)
pagarme_response = requests_retry_session().put(end_point, json=data)
return validate_response(pagarme_response)


Expand Down
32 changes: 32 additions & 0 deletions pagarme/resources/requests_retry.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import requests

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

def headers():
_headers = {
'User-Agent': 'pagarme-python/{}'.format(sdk.VERSION),
'X-PagarMe-User-Agent': 'pagarme-python/{}'.format(sdk.VERSION)
}
return _headers

def requests_retry_session(
retries=3,
backoff_factor=0.3,
status_forcelist=(500, 502, 504),
session=None,
):
session = session or requests.Session()
session.headers.update(headers())

retry = Retry(
total=retries,
read=retries,
connect=retries,
backoff_factor=backoff_factor,
status_forcelist=status_forcelist,
)
adapter = HTTPAdapter(max_retries=retry)
session.mount('https://', adapter)
return session

0 comments on commit 66575f6

Please sign in to comment.