J'ai un ReconnectingClientFactory dans un module. J'aimerais que le module soit aussi flexible que possible. Je n'ai besoin que d'une seule connexion TCP. J'utilise l'usine en tant qu'interface persistante pour cette connexion. Dans le passé, l'usine répondait aux déconnexions en réessayant sans cesse la connexion, n'informant jamais le script de niveau supérieur (le script qui importe le module) qu'il y avait des problèmes de connexion.Comment concevoir une usine torsadée pour gérer les déconnexions?
Voici un bref exemple de ce que j'ai:
Factory(protocol.ReconnectingClientFactory):
def clientConnectionFailed(self, connector, reason):
...
def clientConnectionLost(self, connector, reason):
...
Je pense qu'il est préférable que j'informerai le script de haut niveau (le script qui importe le module) quand il y a des problèmes de connexion. De cette façon, le script de niveau supérieur peut définir un comportement de résolution de déconnexion plutôt que d'être codé en dur dans le module. Mais quelle est la meilleure façon de communiquer les problèmes de connexion au script de niveau supérieur?
Je pourrais déclencher une exception, mais où serait-elle attrapée? Je suppose que le réacteur l'attraperait, mais en quoi cela aide-t-il?
Il n'y a pas de callbacks ou de erreurs que je peux déclencher pour informer le script du problème de connexion.
Le script supérieur peut fournir des fonctions spécifiques [en tant qu'arguments] à appeler lorsque des problèmes de connexion se produisent. Est-ce que c'est un bon design?
Cela semble être une solution incomplète, car elle donne seulement un moyen de gérer les tentatives de connexion échouées, pas les connexions perdues. Comment gérez-vous les connexions perdues sans la coopération du protocole? –