Source code for api4jenkins.requester
# encoding: utf-8
from pprint import pformat
import logging
from requests import Session, adapters
logger = logging.getLogger(__name__)
DEFAULT_MAX_RETRIES = 1
[docs]
def Requester(**kwargs):
# Remote end closed connection without
# response on successive Session requests maybe happen
# see: https://github.com/psf/requests/issues/4784
# and https://github.com/psf/requests/issues/4664
session = Session()
# headers need to be added to the session to avoid multiple 'headers' arguments while sending the request
session.headers.update(kwargs.pop('headers', {}))
max_retries = kwargs.pop('max_retries', DEFAULT_MAX_RETRIES)
adapter = adapters.HTTPAdapter(max_retries=max_retries)
session.mount('http://', adapter)
session.mount('https://', adapter)
def send(method, url, **kw):
logger.debug('%s: %s with parameters: %s',
method, url, pformat(kw))
resp = session.request(method, url, **kwargs, **kw)
logger.debug('Response: %s', resp)
resp.raise_for_status()
return resp
return send