Skip to content

Commit 7ac3e38

Browse files
authored
Merge pull request #77 from moppymopperson/optional-timeout
Optional `timeout` arg to `query_{private,public}` (for `requests` POST).
2 parents be73ff5 + c021d34 commit 7ac3e38

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

krakenex/api.py

+16-6
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ def load_key(self, path):
9292
self.secret = f.readline().strip()
9393
return
9494

95-
def _query(self, urlpath, data, headers=None):
95+
def _query(self, urlpath, data, headers=None, timeout=None):
9696
""" Low-level query handling.
9797
9898
.. note::
@@ -105,6 +105,9 @@ def _query(self, urlpath, data, headers=None):
105105
:type data: dict
106106
:param headers: (optional) HTTPS headers
107107
:type headers: dict
108+
:param timeout: (optional) if not None, a `requests.HTTPError` will be
109+
thrown after `timeout` seconds if a response has not been received
110+
:type timeout: number
108111
:returns: :py:meth:`requests.Response.json`-deserialised Python object
109112
:raises: :py:exc:`requests.HTTPError`: if response status not successful
110113
@@ -116,21 +119,25 @@ def _query(self, urlpath, data, headers=None):
116119

117120
url = self.uri + urlpath
118121

119-
self.response = self.session.post(url, data = data, headers = headers)
122+
self.response = self.session.post(url, data = data, headers = headers,
123+
timeout = timeout)
120124

121125
if self.response.status_code not in (200, 201, 202):
122126
self.response.raise_for_status()
123127

124128
return self.response.json()
125129

126130

127-
def query_public(self, method, data=None):
131+
def query_public(self, method, data=None, timeout=None):
128132
""" Performs an API query that does not require a valid key/secret pair.
129133
130134
:param method: API method name
131135
:type method: str
132136
:param data: (optional) API request parameters
133137
:type data: dict
138+
:param timeout: (optional) if not None, a `requests.HTTPError` will be
139+
thrown after `timeout` seconds if a response has not been received
140+
:type timeout: number
134141
:returns: :py:meth:`requests.Response.json`-deserialised Python object
135142
136143
"""
@@ -139,15 +146,18 @@ def query_public(self, method, data=None):
139146

140147
urlpath = '/' + self.apiversion + '/public/' + method
141148

142-
return self._query(urlpath, data)
149+
return self._query(urlpath, data, timeout = timeout)
143150

144-
def query_private(self, method, data=None):
151+
def query_private(self, method, data=None, timeout=None):
145152
""" Performs an API query that requires a valid key/secret pair.
146153
147154
:param method: API method name
148155
:type method: str
149156
:param data: (optional) API request parameters
150157
:type data: dict
158+
:param timeout: (optional) if not None, a `requests.HTTPError` will be
159+
thrown after `timeout` seconds if a response has not been received
160+
:type timeout: number
151161
:returns: :py:meth:`requests.Response.json`-deserialised Python object
152162
153163
"""
@@ -166,7 +176,7 @@ def query_private(self, method, data=None):
166176
'API-Sign': self._sign(data, urlpath)
167177
}
168178

169-
return self._query(urlpath, data, headers)
179+
return self._query(urlpath, data, headers, timeout = timeout)
170180

171181
def _nonce(self):
172182
""" Nonce counter.

0 commit comments

Comments
 (0)