J'ai un serveur de socket chat assez intensif écrit en Twisted Python, je le démarre en utilisant internet.TCPServer avec une factory et les références d'usine à un objet de protocole qui gère tout communications avec le client.En Python Twisted - Assurez-vous qu'une instance de protocole serait complètement désaffectée
Comment dois-je m'assurer qu'une instance de protocole se détruit complètement une fois qu'un client s'est déconnecté? J'ai une fonction nommée connectionLost qui est déclenchée une fois qu'un client se déconnecte et j'essaye d'arrêter toute activité juste là mais je suspecte que quelque chose de réacteur (comme les instances de twisted.words) continue à courir pour des instances de protocole obsolètes.
Quelle serait la meilleure approche pour gérer cela?
Merci!
J'aimerais répondre à cette question, mais elle a besoin d'éclaircissements. Il n'y a rien de tel qu'une "instance twisted.words", d'une part - 'twisted.words' est un paquet, pas une classe. Quel exemple spécifique croyez-vous qu'il existe encore? Quel comportement spécifique observez-vous, ce qui vous amène à croire que vos instances de protocole sont maintenues en vie trop longtemps? Voyez-vous des messages de journal, ou du trafic réseau, ou un état modifié sur d'autres objets, ou quoi? Autrement dit, vous ne pouvez pas forcer un objet à être désalloué en Python, vous devez simplement supprimer toutes les références à celui-ci. – Glyph
Merci. Je ferai de mon mieux pour décrire ce que je vivais à l'époque, mais les détails pourraient ne pas être précis car je n'utilise plus ce service de socket. Chaque nouvelle connexion de socket TCP a démarré une instance XMPPClientFactory (twisted.words.protocols.jabber.client.XMPPClientFactory) qui gérait une connexion à un serveur jabber, je m'attendais à ce que l'instance de protocole soit désallouée et que l'objet client référencé soit détruit une fois un TCP le client se déconnecte alors qu'en réalité il semblait que les objets jabber du client n'étaient pas détruits. S'il vous plaît laissez-moi savoir si cela décrit mieux le problème. Merci! –