diff --git a/source/easymacro.py b/source/easymacro.py index 4faab64..8c45d1b 100644 --- a/source/easymacro.py +++ b/source/easymacro.py @@ -50,6 +50,7 @@ from enum import IntEnum from functools import wraps from pathlib import Path from pprint import pprint +from socket import timeout from string import Template from typing import Any, Union from urllib.request import Request, urlopen @@ -759,7 +760,7 @@ def get_size_screen(): return res.strip() -def url_open(url, data=None, headers={}, verify=True, get_json=False): +def url_open(url, data=None, headers={}, verify=True, get_json=False, timeout=TIMEOUT): err = '' req = Request(url) for k, v in headers.items(): @@ -769,16 +770,19 @@ def url_open(url, data=None, headers={}, verify=True, get_json=False): if verify: if not data is None and isinstance(data, str): data = data.encode() - response = urlopen(req, data=data) + response = urlopen(req, data=data, timeout=timeout) else: context = ssl._create_unverified_context() - response = urlopen(req, data=data, context=context) + response = urlopen(req, data=data, timeout=timeout, context=context) except HTTPError as e: error(e) err = str(e) except URLError as e: error(e.reason) err = str(e.reason) + except timeout: + err = 'timeout' + error(err) else: headers = dict(response.info()) result = response.read().decode()