Est-ce que quelqu'un a de l'expérience avec ça? J'ai une application tordue. Les clients se connectent au serveur. J'ai ajouté une fonctionnalité de sorte que si un client se connecte à un serveur, mais qu'un client de cette adresse IP est déjà en cours d'exécution, il déconnecte le nouveau client.tordu ne détecte pas les déconnexions client
De temps en temps, j'arrête un ordinateur client (ou VM, pour être précis) sans éteindre manuellement le programme Python. Quand je fais cela, de temps en temps mais assez souvent, le serveur ne détecte aucune déconnexion. Lorsque l'ordinateur revient et tente de se reconnecter, le serveur insiste sur le fait qu'il existe déjà une connexion à partir de cette adresse IP. La seule solution que j'ai trouvé jusqu'à présent est de redémarrer le serveur.
Pourrait-il y avoir d'étranges problèmes de mise en réseau sans passer par la déconnexion? Bug tordu? Je suis sûr à 99% que ce n'est pas un bug avec mon code pour gérer les déconnexions. Mon code est configuré de telle sorte que connectionLost
est appelé chaque fois qu'une connexion est perdue, y compris la plupart des cas d'arrêt d'une machine, et il enregistre une chaîne indiquant ce qui est déconnecté ou déclenche une exception si quelque chose d'étrange se produit. Aucune de ces choses n'apparaissait dans le journal.
Le framework Twisted possède des événements et eventHandler est défini à tous les niveaux conceptuels - transport/connexion, protocole, etc. pour gérer une déconnexion. Donc, l'examen du code aiderait. Vous pouvez publier une version simplifiée du code qui présente ce comportement. – pyfunc
@pyfunc: Je vais creuser autour du code. Je suspecte des problèmes de réseau pour l'instant, parce que j'ai fait que le client continue à essayer de se reconnecter, et dans certains cas il a pu se connecter finalement (bien que dans d'autres cas, non). – Claudiu