From aaa77cdec2225c92bdd403bef13c7f1ffba398d2 Mon Sep 17 00:00:00 2001 From: Cory Virok Date: Thu, 19 May 2016 16:46:14 -0700 Subject: [PATCH] Abstracted out requests.post/get so we can use requests.Session() for keepalive @ezarowny --- rollbar/__init__.py | 14 +++++++------- rollbar/lib/transport.py | 14 ++++++++++++++ rollbar/test/test_rollbar.py | 2 +- 3 files changed, 22 insertions(+), 8 deletions(-) create mode 100644 rollbar/lib/transport.py diff --git a/rollbar/__init__.py b/rollbar/__init__.py index 88445c77..11f543b4 100644 --- a/rollbar/__init__.py +++ b/rollbar/__init__.py @@ -21,7 +21,7 @@ import requests import six -from rollbar.lib import dict_merge, map, parse_qs, text, urljoin, iteritems +from rollbar.lib import dict_merge, map, parse_qs, text, transport, urljoin, iteritems __version__ = '0.12.1' log = logging.getLogger(__name__) @@ -1140,11 +1140,11 @@ def _post_api(path, payload, access_token=None): headers['X-Rollbar-Access-Token'] = access_token url = urljoin(SETTINGS['endpoint'], path) - resp = requests.post(url, - data=payload, - headers=headers, - timeout=SETTINGS.get('timeout', DEFAULT_TIMEOUT), - verify=SETTINGS.get('verify_https', True)) + resp = transport.post(url, + data=payload, + headers=headers, + timeout=SETTINGS.get('timeout', DEFAULT_TIMEOUT), + verify=SETTINGS.get('verify_https', True)) return _parse_response(path, SETTINGS['access_token'], payload, resp) @@ -1153,7 +1153,7 @@ def _get_api(path, access_token=None, endpoint=None, **params): access_token = access_token or SETTINGS['access_token'] url = urljoin(endpoint or SETTINGS['endpoint'], path) params['access_token'] = access_token - resp = requests.get(url, params=params, verify=SETTINGS.get('verify_https', True)) + resp = transport.get(url, params=params, verify=SETTINGS.get('verify_https', True)) return _parse_response(path, access_token, params, resp, endpoint=endpoint) diff --git a/rollbar/lib/transport.py b/rollbar/lib/transport.py new file mode 100644 index 00000000..1f19baaf --- /dev/null +++ b/rollbar/lib/transport.py @@ -0,0 +1,14 @@ +import requests + +_session = requests.Session() + + +def post(*args, **kw): + return _session.post(*args, **kw) + + +def get(*args, **kw): + return _session.get(*args, **kw) + + +__all__ = ['post', 'get'] diff --git a/rollbar/test/test_rollbar.py b/rollbar/test/test_rollbar.py index 58019405..034f01a2 100644 --- a/rollbar/test/test_rollbar.py +++ b/rollbar/test/test_rollbar.py @@ -757,7 +757,7 @@ def test_unicode_exc_info(self, send_payload): payload = json.loads(send_payload.call_args[0][0]) self.assertEqual(payload['data']['body']['trace']['exception']['message'], message) - @mock.patch('requests.post', side_effect=lambda *args, **kw: MockResponse({'status': 'OK'}, 200)) + @mock.patch('rollbar.lib.transport.post', side_effect=lambda *args, **kw: MockResponse({'status': 'OK'}, 200)) def test_serialize_and_send_payload(self, post=None): invalid_b64 = b'CuX2JKuXuLVtJ6l1s7DeeQ==' invalid = base64.b64decode(invalid_b64)