From 40a2426e8615c5f540617fff1f05364efca6f522 Mon Sep 17 00:00:00 2001 From: Prabhakar Gupta Date: Wed, 25 Oct 2017 01:29:35 +0530 Subject: [PATCH] Timeout added for opener Fixes #20 --- python_http_client/client.py | 8 +++++--- tests/test_unit.py | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/python_http_client/client.py b/python_http_client/client.py index e2fa911..2c5c113 100644 --- a/python_http_client/client.py +++ b/python_http_client/client.py @@ -143,7 +143,7 @@ def _build_client(self, name=None): url_path=url_path, append_slash=self.append_slash) - def _make_request(self, opener, request): + def _make_request(self, opener, request, timeout=4): """Make the API call and return the response. This is separated into it's own function, so we can mock it easily for testing. @@ -151,10 +151,12 @@ def _make_request(self, opener, request): :type opener: :param request: url payload to request :type request: urllib.Request object + :param timeout: timeout for request in seconds, default 4 sec + :type integer: :return: urllib response """ try: - return opener.open(request) + return opener.open(request, timeout=timeout) except HTTPError as err: exc = handle_error(err) exc.__cause__ = None @@ -224,7 +226,7 @@ def http_request(*_, **kwargs): if data and not ('Content-Type' in self.request_headers): request.add_header('Content-Type', 'application/json') request.get_method = lambda: method - return Response(self._make_request(opener, request)) + return Response(self._make_request(opener, request, timeout=4)) return http_request else: # Add a segment to the URL diff --git a/tests/test_unit.py b/tests/test_unit.py index d5e8956..280ac2a 100644 --- a/tests/test_unit.py +++ b/tests/test_unit.py @@ -59,7 +59,7 @@ def __init__(self, host, response_code): self.response_code = 200 Client.__init__(self, host) - def _make_request(self, opener, request): + def _make_request(self, opener, request, timeout): if 200 <= self.response_code <299: # if successsful code return MockResponse(self.response_code) else: