Comment résoudre l'erreur 10054
Je suis en utilisant une application fournie par un site web pour recueillir des données à partir du site periodly, disons, 30 ans une fois.
La réponse renvoyée est ensuite enregistré dans la base de données.
- Je utiliser les demandes modulaire par les demandes d'importation et d'écrire des codes à l'Exception de catch.
Les codes pour les principales de la fonction sont les suivantes:
def get_response(self):
try:
response = requests.get(self.request_url)
if response.status_code == 200:
return response.json()
except Exception as e:
msg = "Exception is:\n %s \n" % e
print msg
La fonction ci-dessus fonctionne très bien pour les premières heures.
La fonction peut aussi récupérer quelques exceptions comme:
("Connexion interrompue.', BadStatusLine(""",))
ou
("Connexion interrompue.', erreur(10053, "))
Il omet l'exception (par l'enregistrement d'une valeur Null dans la base de données) et continue d'être la réponse de la prochaine période.
Cependant, la fonction s'arrête de fonctionner lorsque encoutering un 10054 erreur.
Exception is:
('Connection aborted.', error(10054, ''))
- Je vérifier la base de données pour découvrir que tous la réponse est Nulle après l'heure de la 10054 erreur vient.
J'ai tout d'abord deviner que le site web peut répartition, donc aucune réponse n'est reçue.
Mais quand j'ai redémarrer manuellement la fonction, il commence à obtenir de réponse encore.
Donc, c'est pas liée à la ventilation du site.
Je recherche dans stackoverflow et trouver: Errno 10054 Une connexion existante a dû être fermée par l'hôte distant.
Mais je ne sais pas comment le résoudre.
Pourriez-vous veuillez donner quelques solotion à ce problème?(idéalement)
ou de fournir une solution pour redémarrer la fonction sans redémarrer manuellement?
(Il ressemble à une fois que je redémarre le funtion et il fonctionne à nouveau.)
Merci d'avance.
OriginalL'auteur Deep_fox | 2014-12-06
Vous devez vous connecter pour publier un commentaire.
Le serveur web rejetaient votre connexion. C'est généralement parce qu'il est encombré, a la limite de débit ou pense que vous êtes le lancement d'une attaque de déni de service. Si vous obtenez ce à partir d'un serveur, vous devriez dormir un peu avant d'essayer de nouveau. En fait, si vous ne trouvez pas le sommeil avant de réessayer, vous êtes une attaque de déni de service. Le poli chose à faire est de mettre en œuvre progressive de sommeil, par exemple, (1,2,4,8,16,32) secondes.
Mais votre réponse reste une question: Pourquoi ça marche quand j'ai redémarrer manuellement le programme, même si l'écart est faible entre le moment où la fonction automally commencer une demande d'accès et le temps que j'ai redémarrer manuellement la fonction après? Merci.
OriginalL'auteur tdelaney