From a3d6d29b1b9de2bb147e0751c08a39608ebe06c8 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Sun, 18 Mar 2018 12:51:38 +0200 Subject: [PATCH] urequests: Add timeout, passed to underlying socket if supported. --- python-ecosys/urequests/urequests.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/python-ecosys/urequests/urequests.py b/python-ecosys/urequests/urequests.py index 42e91297..e1998711 100644 --- a/python-ecosys/urequests/urequests.py +++ b/python-ecosys/urequests/urequests.py @@ -34,7 +34,15 @@ class Response: def request( - method, url, data=None, json=None, headers={}, stream=None, parse_headers=True, auth=None + method, + url, + data=None, + json=None, + headers={}, + stream=None, + auth=None, + timeout=None, + parse_headers=True, ): redirect = None # redirection url, None means no redirection chunked_data = data and getattr(data, "__iter__", None) and not getattr(data, "__len__", None) @@ -73,6 +81,12 @@ def request( resp_d = {} s = usocket.socket(ai[0], usocket.SOCK_STREAM, ai[2]) + + if timeout is not None: + # Note: settimeout is not supported on all platforms, will raise + # an AttributeError if not available. + s.settimeout(timeout) + try: s.connect(ai[-1]) if proto == "https:":