Forum

Einloggen | Registrieren | RSS  

Raspberry und PIT (Computertechnik)

verfasst von bastelix(R), 22.06.2017, 01:01 Uhr

Hi Luemar,

der Stacktrace ist was womit man arbeiten kann :ok: Um das Thema loggen/Ausgabeumleitung können wir uns später kümmern (vermutlich nur ne Kleinigkeit, aber bis wir die Finden...).

» Nach Start mit ./ ,nach rund 18h und 30m und dann
» nach 2 PIR Aktivierungen folgende Fehlermeldung, wobei das Script die
» beiden male nicht mehr ausgeführt wurde bzw. keine Fotos mehr eintrafen:
» Traceback (most recent calllast):
» >File "./PIR_V1.py", line 59, in <module>
» >>smtp = smtplib.SMTP(smtpHOST, smtpPort)
» >File "/usr/lib/python3.4/smtplib.py", line 242, in __init__
» >>(code, msg) = self.connect(host, port)
» >File "/usr/lib/python3.4/smtplib.py", line 321 in connect
» >>self.sock = self._get__socket(host, port, self.timeout)
» >File "/usr/lib/python3.4/smtplib.py", line 292 in _get_socket
» >>self.source_address)
» >File "/usr/lib/python3.4/socket.py", line 491 in create_connection
» >>for res in getaddrinfo(host, port, 0, SOCK_STREAM):
» >File "/usr/lib/python3.4/socket.py", line 530 in getaddrinfo
» >>for res in -socket.getaddrinfo(host, port, Family, type, proto, flags):
» socket.gaierror: [Errno -2] Name or service not known

Der interessante Teil sind die beiden letzten Zeilen, da steckt vermutlich der Grund für das Verhalten.

>>for res in -socket.getaddrinfo(host, port, Family, type, proto, flags):
socket.gaierror: [Errno -2] Name or service not known

Ohne jetzt irgendetwas über python Netzwerkprogrammierung zu kennen, sehe ich das so: Es wird versucht der Hostname vom SMTP-Server aufzulösen und das schlägt fehl was über eine Exception signalisiert wird. Ich glaub auf die fehlende Fehlerbehandlung hab ich schon mal hingewiesen, aber das ist normal für ne Alpha-Version ;-)

Es kann also der Hostname des SMPT-Servers nicht aufgelöst werden, folgende Gründe kann ich mir vorstellen

* Netzwerkverbindung getrennt
* Internetverbindung getrennt (Zwangstrennung vom Provider, Router abgestürzt/beim rebooten, ...)
* DNS-Server nicht erreichbar
* DNS-Server kennt den Hostname aufgrund einer Störung nicht

Ich halte die ersten beiden Punkte für die wahrscheinlichsten, mit DNS-Servern passiert auch gelegentlich was und im DNS geht auch mal was schief, aber das ist nicht reproduzierbar und passiert i.d.R. nicht alle 24 Stunden (oder so).

Wie gehst du jetzt damit am besten um?
Naja, Fehlerbehandlung einbauen! ;-)

Das einfachste wäre ein try-except-Block um deine Mail-Versand-Funktion (ab Zeile 59), dann wird einfach keine Mail verschickt wenn der Hostname des Mailservers nicht aufgelöst werden kann (oder sonstwas mit dem Netzwerk beim Mail-Versand schief geht) . Der Nachteil ist halt, dass die Mails dann verloren sind. Etwas aufwändiger wäre das mit einer lokalen Mail-Queue zu lösen - also entweder selber programmieren, oder einen lokalen SMTP-Server als Smart-Proxy aufzusetzen - ist aber etwas anspruchsvoller.

Du kannst mal den Artikel hier lesen https://www.networkcomputing.com/applications/python-network-programming-handling-socket-errors/1384050408 da geht es um die Fehlerbehandlung von Netzwerkverbindungen in Python, vielleicht hilft dir das um das ganze besser zu verstehen.

» Zweifle an der Zuverlässigkeit von Raspberry Pi.
Es liegt nur am PI, wenn das Netzwerk-Interface wegbricht - und selbst dann ist das noch kein Stabilitätsproblem solange das nur einmal alle paar Stunden passiert und das Netzwerkinterface von alleine wieder online kommt. ;-)

(IP)-Netzwerke sind einfach unzuverlässig, da hängen so viele Komponenten (Router, DNS-Server, andere Server, verschiedene Provider und Carrier, ....) drin, dass da immer irgendetwas grad nicht geht. Um so flexibler und komplexer das Gesamtsystem ist um so mehr Fehlerbehandlung bei Netzwerkfehlern braucht man. Netflix hat einiges zu dem Thema veröffentlicht: https://github.com/Netflix/Hystrix/wiki/How-it-Works Kannst mal überfliegen, wenn du das nicht verstehst ist das auch nicht schlimm, deren Infrastruktur ist ein bisschen mehr als ein PIR, ein PI und ein Mail-Server - aber das Grundproblem ist das gleiche: Irgendwas ist immer grad nicht erreichbar ;-) Damit haben wir auf Arbeit auch immer mal wieder zu tun - und seitdem immer mehr Dienste in die Cloud abwandern wird das noch schlimmer, das bekommt der normale User aber im Idealfall nicht mit weil die Fehlerbehandlung so gut ist, dass immer ein Fallback greift ;-)

Gruß
Bastelix



Gesamter Thread:

Raspberry und PIT - luemar(R), 09.05.2017, 08:31
Raspberry und PIT - Gast, 09.05.2017, 11:33
Raspberry und PIT - bastelix(R), 09.05.2017, 21:33
Raspberry und PIT - bastelix(R), 09.05.2017, 21:47
Raspberry und PIT - luemar(R), 10.05.2017, 12:30
Raspberry und PIT - bastelix(R), 12.05.2017, 23:15
Raspberry und PIT - luemar(R), 03.06.2017, 16:34
Raspberry und PIT - bastelix(R), 03.06.2017, 23:38
Raspberry und PIT - luemar(R), 04.06.2017, 15:56
Raspberry und PIT - bastelix(R), 04.06.2017, 22:46
Raspberry und PIT - luemar(R), 05.06.2017, 11:26
Raspberry und PIT - luemar(R), 20.06.2017, 13:27
Raspberry und PIT - luemar(R), 20.06.2017, 14:18
Raspberry und PIT - bastelix(R), 22.06.2017, 01:01
Raspberry und PIT - luemar(R), 23.06.2017, 15:31
Raspberry und PIT - bastelix(R), 24.06.2017, 00:32
Raspberry und PIT - luemar(R), 18.09.2017, 10:27
Raspberry und PIT - luemar(R), 18.09.2017, 10:30
Raspberry und PIT - luemar(R), 29.10.2017, 15:52
Raspberry und PIT - luemar(R), 30.10.2017, 18:08
Raspberry und PIT - bastelix(R), 31.10.2017, 00:02
Raspberry und PIT - luemar(R), 31.10.2017, 15:56
Raspberry und PIT - bastelix(R), 30.10.2017, 23:55
Raspberry und PIT - luemar(R), 31.10.2017, 15:52
Raspberry und PIT - bastelix(R), 01.11.2017, 00:40
Raspberry und PIT - luemar(R), 02.11.2017, 10:15
Raspberry und PIT - bastelix(R), 03.11.2017, 01:08
Raspberry und PIT - luemar(R), 15.11.2017, 18:14
Raspberry und PIT - bastelix(R), 15.11.2017, 21:49
Raspberry und PIT - luemar(R), 16.11.2017, 17:01
Raspberry und PIT - luemar(R), 29.11.2017, 14:58
Raspberry und PIT - luemar(R), 22.12.2017, 14:21
Raspberry und PIT - luemar(R), 07.07.2017, 20:53
Raspberry und PIT - bastelix(R), 15.07.2017, 23:46
Raspberry und PIT - luemar(R), 07.07.2017, 21:00