Sie erleben den TIME_WAIT
Zustand der angeschlossenen Steckdosen. Auch wenn Sie Ihre Steckdose geschlossen haben, hat dies noch einige Minuten lang anhaltende Folgen. Die Gründe dafür sowie ein Socket-Flag, das Sie setzen können, um das Verhalten zu deaktivieren (SO_REUSEADDR), werden im UNIX-Leitfaden Socket FAQ erläutert.
Kurz gesagt,
server = socket.socket()
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server.bind(...)
...
Versuchen Sie, import sys hinzuzufügen und Ihre App mit sys.exit() zu beenden. Der Socket bleibt reserviert, bis das System davon überzeugt ist, dass die Anwendung geschlossen ist. Sie können dies mit sys.exit()
explizit machen[Bearbeiten] Ah, okay. Ich bin selbst ziemlich neu in Sachen Steckdosen. Sie sagen also, dass diese Sequenz nicht sicher ist? Ich kann mir keinen anderen Weg vorstellen, es zu tun. Irgendwann muss man seine App schließen, mit etwas Technik, oder? Wie wird es dann richtig gemacht?
server.shutdown(socket.SHUT_RDWR)
server.close()
sys.exit()