Add timeout in url open

This commit is contained in:
Mauricio Baeza 2021-06-22 23:03:06 -05:00
parent 35a0eecd79
commit 20fbd98157
1 changed files with 7 additions and 3 deletions

View File

@ -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()