diff --git a/krakenex/api.py b/krakenex/api.py index b5177b2..130a9c7 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() @@ -124,13 +128,16 @@ def _query(self, urlpath, data, headers=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 """ @@ -139,15 +146,18 @@ 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): + 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 """ @@ -166,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.