From 11ac129a617b7e7663d69d50af357363c160f04b Mon Sep 17 00:00:00 2001 From: Erik Hornberger Date: Sun, 24 Dec 2017 10:33:45 -0500 Subject: [PATCH 1/3] Add timeout argument to _query method Default value is None, so the current default behavior remains unchanged --- krakenex/api.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/krakenex/api.py b/krakenex/api.py index b5177b2..4f261d4 100644 --- a/krakenex/api.py +++ b/krakenex/api.py @@ -92,7 +92,7 @@ def load_key(self, path): self.secret = f.readline().strip() return - def _query(self, urlpath, data, headers=None): + def _query(self, urlpath, data, headers=None, timeout=None): """ Low-level query handling. .. note:: @@ -105,6 +105,9 @@ def _query(self, urlpath, data, headers=None): :type data: dict :param headers: (optional) HTTPS headers :type headers: dict + :param timeout: (optional) if not None, a `requests.HTTPError` will be + thrown after `timeout` seconds if a response has not been received + :type timeout: number :returns: :py:meth:`requests.Response.json`-deserialised Python object :raises: :py:exc:`requests.HTTPError`: if response status not successful @@ -116,7 +119,8 @@ def _query(self, urlpath, data, headers=None): url = self.uri + urlpath - self.response = self.session.post(url, data = data, headers = headers) + self.response = self.session.post(url, data = data, headers = headers, + timeout = timeout) if self.response.status_code not in (200, 201, 202): self.response.raise_for_status() From f7be0f9a035bfc1fb23fe2690cea09d647140741 Mon Sep 17 00:00:00 2001 From: Erik Hornberger Date: Sun, 24 Dec 2017 10:38:43 -0500 Subject: [PATCH 2/3] Add timeout argument to public_query method The default value is None, which means the default behavior remains unchanged --- krakenex/api.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/krakenex/api.py b/krakenex/api.py index 4f261d4..fa5ef12 100644 --- a/krakenex/api.py +++ b/krakenex/api.py @@ -128,13 +128,16 @@ def _query(self, urlpath, data, headers=None, timeout=None): return self.response.json() - def query_public(self, method, data=None): + def query_public(self, method, data=None, timeout=None): """ Performs an API query that does not require a valid key/secret pair. :param method: API method name :type method: str :param data: (optional) API request parameters :type data: dict + :param timeout: (optional) if not None, a `requests.HTTPError` will be + thrown after `timeout` seconds if a response has not been received + :type timeout: number :returns: :py:meth:`requests.Response.json`-deserialised Python object """ @@ -143,7 +146,7 @@ def query_public(self, method, data=None): urlpath = '/' + self.apiversion + '/public/' + method - return self._query(urlpath, data) + return self._query(urlpath, data, timeout = timeout) def query_private(self, method, data=None): """ Performs an API query that requires a valid key/secret pair. From c021d3441c9702877bf3e7f9f881166bc683df25 Mon Sep 17 00:00:00 2001 From: Erik Hornberger Date: Sun, 24 Dec 2017 10:39:04 -0500 Subject: [PATCH 3/3] Add timeout argument to query_private method The default value is None, which means the default behavior remains unchanged --- krakenex/api.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/krakenex/api.py b/krakenex/api.py index fa5ef12..130a9c7 100644 --- a/krakenex/api.py +++ b/krakenex/api.py @@ -148,13 +148,16 @@ def query_public(self, method, data=None, timeout=None): return self._query(urlpath, data, timeout = timeout) - def query_private(self, method, data=None): + def query_private(self, method, data=None, timeout=None): """ Performs an API query that requires a valid key/secret pair. :param method: API method name :type method: str :param data: (optional) API request parameters :type data: dict + :param timeout: (optional) if not None, a `requests.HTTPError` will be + thrown after `timeout` seconds if a response has not been received + :type timeout: number :returns: :py:meth:`requests.Response.json`-deserialised Python object """ @@ -173,7 +176,7 @@ def query_private(self, method, data=None): 'API-Sign': self._sign(data, urlpath) } - return self._query(urlpath, data, headers) + return self._query(urlpath, data, headers, timeout = timeout) def _nonce(self): """ Nonce counter.