Skip to content

Commit 0034a04

Browse files
authored
Merge pull request #49 from liberapay/connection-reuse
Create a `Configuration.Session` attribute
2 parents 5430b15 + 72ade75 commit 0034a04

File tree

3 files changed

+17
-1
lines changed

3 files changed

+17
-1
lines changed

README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,18 @@ You should find that file in `Python_installation_folder\Lib\site-packages\reque
9494
sdk.Config.SSLVerification = 'C:\\Python27\\Lib\\site-packages\\requests\\cacert.pem'
9595

9696

97+
Connection pooling
98+
-------------------------------------------------
99+
To benefit from HTTP connection reuse you need to set `api.Config.Session` like this:
100+
101+
import requests
102+
api.Config.Session = requests.Session()
103+
104+
WARNING: sessions are not guaranteed to be thread-safe!
105+
106+
See the upstream [Session Objects](http://docs.python-requests.org/en/master/user/advanced/#session-objects) documentation for more details.
107+
108+
97109
Sample usage
98110
-------------------------------------------------
99111

mangopaysdk/configuration.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ class Configuration:
2828
# NB: you can swap this class for one of ours that implement some custom logic
2929
RestToolClass = None
3030

31+
# Session object from the `requests` library
32+
Session = None
33+
3134

3235
# we use DEBUG level for internal debugging
3336
if (Configuration.DebugMode):

mangopaysdk/tools/resttool.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ def __init__(self, root = None, authRequired = True):
4141
self._root = root
4242
self._debugMode = self._root.Config.DebugMode
4343
self._sslVerification = self._root.Config.SSLVerification
44+
self._session = self._root.Config.Session
4445

4546
def Request(self, urlMethod, requestType, requestData = None, pagination = None, additionalUrlParams = None):
4647
"""Call request to MangoPay API.
@@ -107,7 +108,7 @@ def _generateRequestIdempotent(self, idempotencyKey, urlMethod, pagination, addi
107108
def _sendRequest(self, request):
108109
"""Prepare and send the request"""
109110
prepared_request = request.prepare()
110-
session = requests.Session()
111+
session = self._session or requests.Session()
111112
response = session.send(prepared_request, verify=self._sslVerification)
112113
return response
113114

0 commit comments

Comments
 (0)