web-dev-qa-db-fra.com

python: [Errno 10054] Une connexion existante a été fermée de force par l'hôte distant

J'écris python pour explorer l'espace Twitter en utilisant Twitter-py. J'ai mis le robot en veille pendant un certain temps (2 secondes) entre chaque demande à api.Twitter.com. Cependant, après quelques fois d'exécution (environ 1), lorsque la limite de débit de Twitter n'est pas encore dépassée, j'ai eu cette erreur.

[Errno 10054] An existing connection was forcibly closed by the remote Host.

Quelles sont les causes possibles de ce problème et comment y remédier?

J'ai recherché et trouvé que le serveur Twitter lui-même peut forcer la fermeture de la connexion en raison de nombreuses demandes.

Merci beaucoup d'avance.

28
Nama Keru

Cela peut être dû au fait que les deux côtés de la connexion ne sont pas d'accord sur le fait que la connexion a expiré ou non pendant une connexion persistante. (Votre code essaie de réutiliser la connexion juste au moment où le serveur la ferme car elle est inactive depuis trop longtemps.) Vous devez simplement réessayer l'opération sur une nouvelle connexion. (Je suis surpris que votre bibliothèque ne le fasse pas automatiquement.)

10
David Schwartz

il existe de nombreuses causes telles que

  • La liaison réseau entre le serveur et le client peut être temporairement interrompue.
  • manquer de ressources système.
  • envoi de données malformées.

Pour examiner le problème en détail, vous pouvez utiliser Wireshark.

ou vous pouvez simplement demander à nouveau ou vous reconnecter.

Pour moi, ce problème est survenu lors de la tentative de connexion à la base de données SAP Hana. Quand j'ai eu cette erreur,

OperationalError: Perte de connexion au serveur HANA (ConnectionResetError (10054, 'Une connexion existante a été fermée de force par l'hôte distant', Aucune, 10054, Aucune))

J'ai essayé d'exécuter le code de connexion (mentionné ci-dessous), ce qui a à nouveau créé cette erreur et cela a fonctionné.

 
 import pyhdb 
 connection = pyhdb.connect (Host = "example.com", port = 30015, user = "user", password = "secret") 
 cursor = connection.cursor () 
 cursor.execute ("SELECT 'Hello Python World' FROM DUMMY") 
 cursor.fetchone () 
 connection.close () 
 

C'est parce que le serveur a refusé de se connecter. Il vous faudra peut-être attendre un moment et réessayer. Essayez de fermer Hana Studio en vous déconnectant puis en vous reconnectant. Continuez à exécuter le code plusieurs fois.

0
Sreeja