Hat jemand Erfahrung damit? Ich habe eine verdrehte App. Die Clients stellen eine Verbindung zum Server her. Ich habe ein Feature hinzugefügt, dass, wenn ein Client eine Verbindung zu einem Server herstellt, aber bereits ein Client von dieser IP-Adresse ausgeführt wird, die Verbindung zum neuen Client getrennt wird.Twisted erkennt Client nicht getrennt
Gelegentlich habe ich einen Clientcomputer (oder VM, um genau zu sein) heruntergefahren, ohne das Python-Programm manuell auszuschalten. Wenn ich dies ab und zu, aber ziemlich oft mache, erkennt der Server keine Trennung. Wenn der Computer wieder hochfährt und versucht, die Verbindung wiederherzustellen, besteht der Server darauf, dass bereits eine Verbindung von dieser IP-Adresse besteht. Die einzige Lösung, die ich bisher gefunden habe, ist den Server neu zu starten.
Könnte es seltsame Netzwerk-Dinge sein, die die Trennung nicht durchlaufen haben? Twisted Bug?
Ich bin zu 99% sicher, dass es kein Fehler mit meinem Code zum Behandeln von Verbindungsabbrüchen ist. Mein Code ist so eingerichtet, dass connectionLost
immer dann aufgerufen wird, wenn eine Verbindung verloren geht, einschließlich der meisten Fälle, in denen ein Computer heruntergefahren wird, und entweder eine Zeichenfolge protokolliert, die trennt, oder eine Ausnahme auslöst, wenn etwas Seltsames passiert. Keines dieser Dinge tauchte im Log auf.
Twisted Framework hat Ereignisse und EventHandler auf allen konzeptionellen Ebenen definiert - Transport/Verbindung, Protokoll usw., um eine Trennung zu behandeln. Eine Überprüfung des Codes würde also helfen. Sie können eine vereinfachte Version des Codes veröffentlichen, der dieses Verhalten aufweist. – pyfunc
@pyfunc: Ich werde den Code umgraben. Ich vermute Netzwerkprobleme für jetzt, weil ich den Client versuchte, die Verbindung wiederherzustellen, und in einigen Fällen konnte es schließlich verbinden (obwohl in anderen Fällen nicht). – Claudiu