12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import requests
-
-
- the_http_adapter = requests.adapters.HTTPAdapter(pool_connections=100)
- the_https_adapter = requests.adapters.HTTPAdapter(pool_connections=100)
-
-
- class SessionSinglePool(requests.Session):
-
- def __init__(self):
- global the_https_adapter, the_http_adapter
- super(SessionSinglePool, self).__init__()
-
- # reuse the same adapters
- self.adapters.clear()
- self.mount('https://', the_https_adapter)
- self.mount('http://', the_http_adapter)
-
- def close(self):
- """Call super, but clear adapters since there are managed globaly"""
- self.adapters.clear()
- super(SessionSinglePool, self).close()
-
-
- def request(method, url, **kwargs):
- """same as requests/requests/api.py request(...) except it use SessionSinglePool"""
- session = SessionSinglePool()
- response = session.request(method=method, url=url, **kwargs)
- session.close()
- return response
-
-
- def get(url, **kwargs):
- kwargs.setdefault('allow_redirects', True)
- return request('get', url, **kwargs)
-
-
- def options(url, **kwargs):
- kwargs.setdefault('allow_redirects', True)
- return request('options', url, **kwargs)
-
-
- def head(url, **kwargs):
- kwargs.setdefault('allow_redirects', False)
- return request('head', url, **kwargs)
-
-
- def post(url, data=None, **kwargs):
- return request('post', url, data=data, **kwargs)
-
-
- def put(url, data=None, **kwargs):
- return request('put', url, data=data, **kwargs)
-
-
- def patch(url, data=None, **kwargs):
- return request('patch', url, data=data, **kwargs)
-
-
- def delete(url, **kwargs):
- return request('delete', url, **kwargs)
|