Как сделать, чтобы после except функция повторно запускалась?
Есть функция, вызываемая в потоке, которая запрашивает значения у датчика в цикле. При недоступности датчика выбрасываются except, в которых вызывается continue, и по логике вещей цикл должен продолжаться с начала. Но так не происходит. Функция просто перестает выполнятся. Подскажите почему так происходит и как исправить?
def parsing_GPIO_4relay11():
while True:
try:
url = "http://192.168.0.120/gpioprint"
r = requests.get(url)
Variables.status_code_4relay = r.status_code
r.encoding = "UTF8"
with open('4relay.txt', 'w') as output_file:
output_file.write(r.text)
f = open('4relay.txt')
str_4relay = f.read()
f.close()
print('parsing_GPIO_4relay = Ok')
str_4relay2 = str_4relay[str_4relay.find(":") + 1:]
r1 = str_4relay2[: str_4relay2.find(";")]
r2 = str_4relay[10:11]
r3 = str_4relay[18:19]
r4 = str_4relay[23:24]
relay_list = [r1, r2, r3, r4]
Variables.parsing_GPIO_4relay = relay_list
Variables.parsing_GPIO_4relay1 = relay_list
print('Variables.parsing_GPIO_4relay =' + str(Variables.parsing_GPIO_4relay))
except TimeoutError:
Variables.parsing_GPIO_4relay = [0, 0, 0, 0]
print('parsing_GPIO_4relay11 except TimeoutError')
continue
except ConnectTimeout:
print('parsing_GPIO_4relay11 except ConnectTimeout')
Variables.parsing_GPIO_4relay = [0, 0, 0, 0]
continue
except ConnectionError:
print('parsing_GPIO_4relay11 except ConnectionError')
Variables.parsing_GPIO_4relay = [0, 0, 0, 0]
continue
except NewConnectionError:
print('parsing_GPIO_4relay11 except NewConnectionError')
Variables.parsing_GPIO_4relay = [0, 0, 0, 0]
continue
except MaxRetryError:
sleep(10.0)
print('parsing_GPIO_4Relay11 MaxRetry Error!')
Variables.parsing_GPIO_4relay = [0, 0, 0, 0]
continue
break
sleep(10.0)
parsing_GPIO_4relay11()
Листинг:
Exception in thread Thread-1:
Traceback (most recent call last):
File "C:\Users\Noutbook\AppData\Local\Programs\Python\Python38\lib\site-packages\urllib3\connection.py", line 169, in _new_conn
conn = connection.create_connection(
File "C:\Users\Noutbook\AppData\Local\Programs\Python\Python38\lib\site-packages\urllib3\util\connection.py", line 96, in create_connection
raise err
File "C:\Users\Noutbook\AppData\Local\Programs\Python\Python38\lib\site-packages\urllib3\util\connection.py", line 86, in create_connection
sock.connect(sa)
TimeoutError: [WinError 10060] Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\Noutbook\AppData\Local\Programs\Python\Python38\lib\site-packages\urllib3\connectionpool.py", line 699, in urlopen
httplib_response = self._make_request(
File "C:\Users\Noutbook\AppData\Local\Programs\Python\Python38\lib\site-packages\urllib3\connectionpool.py", line 394, in _make_request
conn.request(method, url, **httplib_request_kw)
File "C:\Users\Noutbook\AppData\Local\Programs\Python\Python38\lib\site-packages\urllib3\connection.py", line 234, in request
super(HTTPConnection, self).request(method, url, body=body, headers=headers)
File "C:\Users\Noutbook\AppData\Local\Programs\Python\Python38\lib\http\client.py", line 1255, in request
self._send_request(method, url, body, headers, encode_chunked)
File "C:\Users\Noutbook\AppData\Local\Programs\Python\Python38\lib\http\client.py", line 1301, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "C:\Users\Noutbook\AppData\Local\Programs\Python\Python38\lib\http\client.py", line 1250, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "C:\Users\Noutbook\AppData\Local\Programs\Python\Python38\lib\http\client.py", line 1010, in _send_output
self.send(msg)
File "C:\Users\Noutbook\AppData\Local\Programs\Python\Python38\lib\http\client.py", line 950, in send
self.connect()
File "C:\Users\Noutbook\AppData\Local\Programs\Python\Python38\lib\site-packages\urllib3\connection.py", line 200, in connect
conn = self._new_conn()
File "C:\Users\Noutbook\AppData\Local\Programs\Python\Python38\lib\site-packages\urllib3\connection.py", line 181, in _new_conn
raise NewConnectionError(
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x000000000365BE20>: Failed to establish a new connection: [WinError 10060] Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\Noutbook\AppData\Local\Programs\Python\Python38\lib\site-packages\requests\adapters.py", line 439, in send
resp = conn.urlopen(
File "C:\Users\Noutbook\AppData\Local\Programs\Python\Python38\lib\site-packages\urllib3\connectionpool.py", line 755, in urlopen
retries = retries.increment(
File "C:\Users\Noutbook\AppData\Local\Programs\Python\Python38\lib\site-packages\urllib3\util\retry.py", line 574, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='192.168.0.120', port=80): Max retries exceeded with url: /gpioprint (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000000000365BE20>: Failed to establish a new connection: [WinError 10060] Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\Noutbook\AppData\Local\Programs\Python\Python38\lib\threading.py", line 932, in _bootstrap_inner
self.run()
File "C:\Users\Noutbook\AppData\Local\Programs\Python\Python38\lib\threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "D:\Java work\eclipse\test\New_vision\Stream_2.py", line 352, in parsing_GPIO_4relay11
parsing_GPIO_4relay11()
File "D:\Java work\eclipse\test\New_vision\Stream_2.py", line 352, in parsing_GPIO_4relay11
parsing_GPIO_4relay11()
File "D:\Java work\eclipse\test\New_vision\Stream_2.py", line 352, in parsing_GPIO_4relay11
parsing_GPIO_4relay11()
[Previous line repeated 3 more times]
File "D:\Java work\eclipse\test\New_vision\Stream_2.py", line 298, in parsing_GPIO_4relay11
r = requests.get(url)
File "C:\Users\Noutbook\AppData\Local\Programs\Python\Python38\lib\site-packages\requests\api.py", line 76, in get
return request('get', url, params=params, **kwargs)
File "C:\Users\Noutbook\AppData\Local\Programs\Python\Python38\lib\site-packages\requests\api.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "C:\Users\Noutbook\AppData\Local\Programs\Python\Python38\lib\site-packages\requests\sessions.py", line 542, in request
resp = self.send(prep, **send_kwargs)
File "C:\Users\Noutbook\AppData\Local\Programs\Python\Python38\lib\site-packages\requests\sessions.py", line 655, in send
r = adapter.send(request, **kwargs)
File "C:\Users\Noutbook\AppData\Local\Programs\Python\Python38\lib\site-packages\requests\adapters.py", line 516, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='192.168.0.120', port=80): Max retries exceeded with url: /gpioprint (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000000000365BE20>: Failed to establish a new connection: [WinError 10060] Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера'))