Seite 1 von 1

socket.gethostbyname schlägt gelegentlich fehl

Verfasst: Donnerstag 16. Juli 2020, 10:12
von CoderGirl
Hallo,

ich lese die aktuelle IP für einen meiner Sensoren mittels

Code: Alles auswählen

IP_sensor = socket.gethostbyname ("sensor-76340")
aus.

Meist klappt es auch, aber hin und wieder erhalte ich diese Exception:

Code: Alles auswählen

Traceback (most recent call last):
  File "myipreader.py", line 47, in <module>
    IP_sensor = socket.gethostbyname ("sensor-76340")
socket.gaierror: [Errno 11001] getaddrinfo failed
Wie kann ich da evt. sauber mit umgehen?

Danke

Euer Codergirl

Re: socket.gethostbyname schlägt gelegentlich fehl

Verfasst: Donnerstag 16. Juli 2020, 11:19
von __blackjack__
@CoderGirl: ``try``/``except socket.gaierror:``, eventuell ``else``, und dann halt Code der das macht was in den jeweiligen Fällen passieren soll.

Re: socket.gethostbyname schlägt gelegentlich fehl

Verfasst: Donnerstag 16. Juli 2020, 11:31
von CoderGirl
Hallo

das try-except habe ich scho drin. Problem ist, wenn das except geworfen wird, dann komme ich halt nicht an die IP ;-)

Re: socket.gethostbyname schlägt gelegentlich fehl

Verfasst: Donnerstag 16. Juli 2020, 11:54
von __deets__
Na es hängt davon ab, was du dann tun willst. Soll einfach solange probiert werden, bis es klappt? Dann pack eine while schleife und ggf eine kurze Pause dazu. Oder wenn weiter gemacht werden soll, aber eben zb kein Eintrag in die datenbank oder was auch immer die weiteren Verarbeitungsschritte sind, dann kannst du zb None zurück geben, oder eine Anwendungsspezifische Ausnahme erzeugen und weiter “oben” im Code darauf reagieren.

Erledigt: socket.gethostbyname schlägt gelegentlich fehl

Verfasst: Donnerstag 16. Juli 2020, 12:02
von CoderGirl
Hallo, Ok dann überlege ich mir einfach einen WorkAround. Dachte, es gäbe da einen altrnativen Aufruf etc. Aber ich bekomme das hin :)

Re: socket.gethostbyname schlägt gelegentlich fehl

Verfasst: Donnerstag 16. Juli 2020, 12:40
von sparrow
Die Exception tritt ja nicht grundlos auf. Sie tritt auf, weil irgend etwas nicht gestimmt hat. Die Adresse konnte nicht ermittelt werden, weil der Hostname im Netzwerk nicht gefunden wurde. Warum auch immer. Und auf diese Exception musst du reagieren.
Es kann auch keinen Workaround oder einen alternativen Aufruf. Das System findet den Host nicht. Der taucht aber nicht im Netzt auf, nur weil man es auf eine andere Art und Weise versucht.

Re: socket.gethostbyname schlägt gelegentlich fehl

Verfasst: Donnerstag 16. Juli 2020, 13:15
von __blackjack__
Und es gibt dann ja auch immer noch die zwei Möglichkeiten das man den Host falsch geschrieben hat, oder er tatsächlich dauerhaft nicht im Netz existiert. Die sollte man auch bedenken und das Programm so schreiben, dass es auch in diesen Fällen sinnvoll reagiert.

Und testen. Solche Fälle sollte man am besten auch alle mal testen. Am besten automatisiert → Unit-Tests.

Re: socket.gethostbyname schlägt gelegentlich fehl

Verfasst: Donnerstag 16. Juli 2020, 14:36
von CoderGirl
Dank euch. Ich habe es für mich zufriedenstellend gelöst