mirror of
https://github.com/home-assistant/core.git
synced 2025-07-14 16:57:10 +00:00
Fix unhandled exception when Swisscom Internet Box is not responsive (#28618)
* Update device_tracker.py From time to time, Swisscom Internet Box fails to respond and this causes an exception, which is currently not handled by the code: Traceback (most recent call last): File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/components/device_tracker/setup.py", line 164, in async_device_tracker_scan found_devices = await scanner.async_scan_devices() File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run result = self.fn(*self.args, **self.kwargs) File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/components/swisscom/device_tracker.py", line 46, in scan_devices self._update_info() File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/components/swisscom/device_tracker.py", line 67, in _update_info data = self.get_swisscom_data() File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/components/swisscom/device_tracker.py", line 83, in get_swisscom_data request = requests.post(url, headers=headers, data=data, timeout=10) File "/srv/homeassistant/lib/python3.7/site-packages/requests/api.py", line 116, in post return request('post', url, data=data, json=json, **kwargs) File "/srv/homeassistant/lib/python3.7/site-packages/requests/api.py", line 60, in request return session.request(method=method, url=url, **kwargs) File "/srv/homeassistant/lib/python3.7/site-packages/requests/sessions.py", line 533, in request resp = self.send(prep, **send_kwargs) File "/srv/homeassistant/lib/python3.7/site-packages/requests/sessions.py", line 686, in send r.content File "/srv/homeassistant/lib/python3.7/site-packages/requests/models.py", line 828, in content self._content = b''.join(self.iter_content(CONTENT_CHUNK_SIZE)) or b'' File "/srv/homeassistant/lib/python3.7/site-packages/requests/models.py", line 757, in generate raise ConnectionError(e) requests.exceptions.ConnectionError: HTTPConnectionPool(host='192.168.1.1', port=80): Read timed out. I've just added a try-except around the post. * Update device_tracker.py Addressed blank line issue reported by flake8 * Update device_tracker.py Fixed alignment to be Black compliant. * Update device_tracker.py Fixed one more alignment issue
This commit is contained in:
parent
504ad6488c
commit
bc53e9d0c8
@ -80,9 +80,18 @@ class SwisscomDeviceScanner(DeviceScanner):
|
|||||||
{"service":"Devices", "method":"get",
|
{"service":"Devices", "method":"get",
|
||||||
"parameters":{"expression":"lan and not self"}}"""
|
"parameters":{"expression":"lan and not self"}}"""
|
||||||
|
|
||||||
request = requests.post(url, headers=headers, data=data, timeout=10)
|
|
||||||
|
|
||||||
devices = {}
|
devices = {}
|
||||||
|
|
||||||
|
try:
|
||||||
|
request = requests.post(url, headers=headers, data=data, timeout=10)
|
||||||
|
except (
|
||||||
|
requests.exceptions.ConnectionError,
|
||||||
|
requests.exceptions.Timeout,
|
||||||
|
requests.exceptions.ConnectTimeout,
|
||||||
|
):
|
||||||
|
_LOGGER.info("No response from Swisscom Internet Box")
|
||||||
|
return devices
|
||||||
|
|
||||||
for device in request.json()["status"]:
|
for device in request.json()["status"]:
|
||||||
try:
|
try:
|
||||||
devices[device["Key"]] = {
|
devices[device["Key"]] = {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user