Skip to content

Commit f2c645b

Browse files
author
LiamNorman
committed
added argument to client constructor to set request timeout
1 parent 521fdaa commit f2c645b

2 files changed

Lines changed: 6 additions & 4 deletions

File tree

sailthru/sailthru_client.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,11 @@ class SailthruClient(object):
5555
client = SailthruClient(api_key, api_secret)
5656
"""
5757

58-
def __init__(self, api_key, secret, api_url=None):
58+
def __init__(self, api_key, secret, api_url=None, request_timeout=None):
5959
self.api_key = api_key
6060
self.secret = secret
6161
self.api_url = api_url if api_url else 'https://api.sailthru.com'
62+
self.request_timeout = request_timeout
6263
self.last_rate_limit_info = {}
6364

6465
def send(self, template, email, _vars=None, options=None, schedule_time=None, limit=None):
@@ -762,7 +763,7 @@ def _api_request(self, action, data, request_type, headers=None):
762763
def _http_request(self, action, data, method, file_data=None, headers=None):
763764
url = self.api_url + '/' + action
764765
file_data = file_data or {}
765-
response = sailthru_http_request(url, data, method, file_data, headers)
766+
response = sailthru_http_request(url, data, method, file_data, headers, self.request_timeout)
766767
if (action in self.last_rate_limit_info):
767768
self.last_rate_limit_info[action][method] = response.get_rate_limit_headers()
768769
else:

sailthru/sailthru_http.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,21 +27,22 @@ def flatten(hash_table, brackets=True):
2727
return f
2828
return flatten(hash_table, False)
2929

30-
def sailthru_http_request(url, data, method, file_data=None, headers=None):
30+
def sailthru_http_request(url, data, method, file_data=None, headers=None, request_timeout=None):
3131
"""
3232
Perform an HTTP GET / POST / DELETE request
3333
"""
3434
data = flatten_nested_hash(data)
3535
method = method.upper()
3636
params, data = (None, data) if method == 'POST' else (data, None)
3737
sailthru_headers = {'User-Agent': 'Sailthru API Python Client %s; Python Version: %s' % ('2.3.4', platform.python_version())}
38+
request_timeout = request_timeout if request_timeout is not None else 10
3839
if headers and isinstance(headers, dict):
3940
for key, value in sailthru_headers.items():
4041
headers[key] = value
4142
else:
4243
headers = sailthru_headers
4344
try:
44-
response = requests.request(method, url, params=params, data=data, files=file_data, headers=headers, timeout=10)
45+
response = requests.request(method, url, params=params, data=data, files=file_data, headers=headers, timeout=request_timeout)
4546
return SailthruResponse(response)
4647
except requests.HTTPError as e:
4748
raise SailthruClientError(str(e))

0 commit comments

Comments
 (0)