diff --git a/README.md b/README.md index 678f07a..07dc899 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,9 @@ import finnhub # Setup client finnhub_client = finnhub.Client(api_key="YOUR API KEY") +# Optionally configure a timeout (in seconds) for all API requests +finnhub_client = finnhub.Client(api_key="YOUR API KEY", timeout=8) + # Stock candles res = finnhub_client.stock_candles('AAPL', 'D', 1590988249, 1591852249) print(res) diff --git a/finnhub/client.py b/finnhub/client.py index ffcdd00..2dec8d4 100644 --- a/finnhub/client.py +++ b/finnhub/client.py @@ -9,7 +9,8 @@ class Client: API_URL = "https://api.finnhub.io/api/v1" DEFAULT_TIMEOUT = 10 - def __init__(self, api_key, proxies=None): + def __init__(self, api_key, proxies=None, timeout=None): + self._timeout = timeout self._session = self._init_session(api_key, proxies) @staticmethod @@ -34,7 +35,8 @@ def __exit__(self, *exc): def _request(self, method, path, **kwargs): uri = "{}/{}".format(self.API_URL, path) - kwargs["timeout"] = kwargs.get("timeout", self.DEFAULT_TIMEOUT) + timeout = self.DEFAULT_TIMEOUT if self._timeout is None else self._timeout + kwargs["timeout"] = kwargs.get("timeout", timeout) kwargs["params"] = self._format_params(kwargs.get("params", {})) response = getattr(self._session, method)(uri, **kwargs)