envirosolutionspl / pobieracz_danych_gugik

Wtyczka QGIS do pobierania danych przestrzennych z zasobów GUGiK
GNU General Public License v3.0
5 stars 1 forks source link

nieobsłużony błąd podczas wczytywania wtyczki (otwierania) bez internetu #62

Closed envirosolutionspl closed 1 month ago

envirosolutionspl commented 10 months ago

Nalezy obsłużyć błąd związany z brakiem internetu

`Wystąpił błąd podczas wykonywania kodu Pythona:

requests.exceptions.ConnectionError: ('Connection aborted.', TimeoutError(10060, 'Próba połączenia nie powiodła się, ponieważ połączona strona nie odpowiedziała poprawnie po ustalonym okresie czasu lub utworzone połączenie nie powiodło się, ponieważ połączony host nie odpowiedział', None, 10060, None)) Traceback (most recent call last): File "C:\OSGeo4W\apps\Python39\lib\site-packages\urllib3\connectionpool.py", line 670, in urlopen httplib_response = self._make_request( File "C:\OSGeo4W\apps\Python39\lib\site-packages\urllib3\connectionpool.py", line 426, in _make_request six.raise_from(e, None) File "", line 3, in raise_from File "C:\OSGeo4W\apps\Python39\lib\site-packages\urllib3\connectionpool.py", line 421, in _make_request httplib_response = conn.getresponse() File "C:\OSGeo4W\apps\Python39\lib\http\client.py", line 1345, in getresponse response.begin() File "C:\OSGeo4W\apps\Python39\lib\http\client.py", line 307, in begin version, status, reason = self._read_status() File "C:\OSGeo4W\apps\Python39\lib\http\client.py", line 268, in _read_status line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1") File "C:\OSGeo4W\apps\Python39\lib\socket.py", line 704, in readinto return self._sock.recv_into(b) File "C:\OSGeo4W\apps\Python39\lib\ssl.py", line 1241, in recv_into return self.read(nbytes, buffer) File "C:\OSGeo4W\apps\Python39\lib\ssl.py", line 1099, in read return self._sslobj.read(len, buffer) TimeoutError: [WinError 10060] Próba połączenia nie powiodła się, ponieważ połączona strona nie odpowiedziała poprawnie po ustalonym okresie czasu lub utworzone połączenie nie powiodło się, ponieważ połączony host nie odpowiedział

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "C:\OSGeo4W\apps\Python39\lib\site-packages\requests\adapters.py", line 439, in send resp = conn.urlopen( File "C:\OSGeo4W\apps\Python39\lib\site-packages\urllib3\connectionpool.py", line 726, in urlopen retries = retries.increment( File "C:\OSGeo4W\apps\Python39\lib\site-packages\urllib3\util\retry.py", line 410, in increment raise six.reraise(type(error), error, _stacktrace) File "C:\OSGeo4W\apps\Python39\lib\site-packages\urllib3\packages\six.py", line 734, in reraise raise value.with_traceback(tb) File "C:\OSGeo4W\apps\Python39\lib\site-packages\urllib3\connectionpool.py", line 670, in urlopen httplib_response = self._make_request( File "C:\OSGeo4W\apps\Python39\lib\site-packages\urllib3\connectionpool.py", line 426, in _make_request six.raise_from(e, None) File "", line 3, in raise_from File "C:\OSGeo4W\apps\Python39\lib\site-packages\urllib3\connectionpool.py", line 421, in _make_request httplib_response = conn.getresponse() File "C:\OSGeo4W\apps\Python39\lib\http\client.py", line 1345, in getresponse response.begin() File "C:\OSGeo4W\apps\Python39\lib\http\client.py", line 307, in begin version, status, reason = self._read_status() File "C:\OSGeo4W\apps\Python39\lib\http\client.py", line 268, in _read_status line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1") File "C:\OSGeo4W\apps\Python39\lib\socket.py", line 704, in readinto return self._sock.recv_into(b) File "C:\OSGeo4W\apps\Python39\lib\ssl.py", line 1241, in recv_into return self.read(nbytes, buffer) File "C:\OSGeo4W\apps\Python39\lib\ssl.py", line 1099, in read return self._sslobj.read(len, buffer) urllib3.exceptions.ProtocolError: ('Connection aborted.', TimeoutError(10060, 'Próba połączenia nie powiodła się, ponieważ połączona strona nie odpowiedziała poprawnie po ustalonym okresie czasu lub utworzone połączenie nie powiodło się, ponieważ połączony host nie odpowiedział', None, 10060, None))

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "C:\Users/micha/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\pobieracz_danych_gugik\pobieracz_danych_gugik.py", line 172, in run self.dockwidget = PobieraczDanychDockWidget() File "C:\Users/micha/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\pobieracz_danych_gugik\dialogs.py", line 57, in init self.regionFetch = RegionFetch() File "C:\Users/micha/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\pobieracz_danych_gugik\uldk.py", line 5, in init self.wojewodztwoDict = self.fetchWojewodztwoDict() File "C:\Users/micha/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\pobieracz_danych_gugik\uldk.py", line 38, in fetchWojewodztwoDict resp = get_legacy_session().get('https://uldk.gugik.gov.pl/service.php?obiekt=wojewodztwo&wynik=wojewodztwo,teryt', verify=False) File "C:\OSGeo4W\apps\Python39\lib\site-packages\requests\sessions.py", line 543, in get return self.request('GET', url, kwargs) File "C:\OSGeo4W\apps\Python39\lib\site-packages\requests\sessions.py", line 530, in request resp = self.send(prep, send_kwargs) File "C:\OSGeo4W\apps\Python39\lib\site-packages\requests\sessions.py", line 643, in send r = adapter.send(request, **kwargs) File "C:\OSGeo4W\apps\Python39\lib\site-packages\requests\adapters.py", line 498, in send raise ConnectionError(err, request=request) requests.exceptions.ConnectionError: ('Connection aborted.', TimeoutError(10060, 'Próba połączenia nie powiodła się, ponieważ połączona strona nie odpowiedziała poprawnie po ustalonym okresie czasu lub utworzone połączenie nie powiodło się, ponieważ połączony host nie odpowiedział', None, 10060, None))

Wersja Pythona: 3.9.5 (tags/v3.9.5:0a7dcbd, May 3 2021, 17:27:52) [MSC v.1928 64 bit (AMD64)] Wersja QGIS: 3.28.8-Firenze Firenze, 5ac45272b58

Lokalizacja Pythona: C:/OSGeo4W/apps/qgis-ltr/./python C:/Users/micha/AppData/Roaming/QGIS/QGIS3\profiles\default/python C:\git\PIT2.0_QgisPlugin C:/Users/micha/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins C:/OSGeo4W/apps/qgis-ltr/./python/plugins C:\OSGeo4W\bin\python39.zip C:\OSGeo4W\apps\Python39\DLLs C:\OSGeo4W\apps\Python39\lib C:\OSGeo4W\bin C:\OSGeo4W\apps\Python39 C:\OSGeo4W\apps\Python39\lib\site-packages C:\OSGeo4W\apps\Python39\lib\site-packages\win32 C:\OSGeo4W\apps\Python39\lib\site-packages\win32\lib C:\OSGeo4W\apps\Python39\lib\site-packages\Pythonwin C:/Users/micha/AppData/Roaming/QGIS/QGIS3\profiles\default/python`

grucja commented 9 months ago

W niektórych miejscach jest poprawione, ale np. pobieranie LAZ nie jest obsłużone.

wojtek19022 commented 2 months ago

W niektórych miejscach jest poprawione, ale np. pobieranie LAZ nie jest obsłużone.

Błąd z tego co widzę został obsłużony tylko przy włączaniu wtyczki. Trzeba taki warunek powielić również we wszystkich funkcjonalnościach. Może wstępnym jakimś weryfikatorem, żeby nie było sytuacji, że ten sam kod zostanie przeklejony X razy

wojtek19022 commented 2 months ago

@Ueschar trochę wątpię, że to zadziała. W takim czymś dużo wątków może się zawrzeć zamiast błędu połączenia z Internetem, np. błąd kodowania czy coś takeigo