Maison  >  Article  >  développement back-end  >  Que signifie le délai d’attente de la demande ?

Que signifie le délai d’attente de la demande ?

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼original
2019-06-14 09:34:1952784parcourir

Timeout

Pour éviter que le serveur ne réponde à temps, la plupart des requêtes envoyées à des serveurs externes doivent porter le paramètre timeout. Par défaut, les requêtes n'expireront pas automatiquement à moins qu'une valeur de délai d'attente ne soit explicitement spécifiée. Sans délai d'attente, votre code peut se bloquer pendant plusieurs minutes ou plus.

Que signifie le délai d’attente de la demande ?

Le délai d'attente de connexion fait référence au nombre de secondes que Request attendra lorsque votre client se connectera au port de la machine distante (correspondant à connect()). Une bonne pratique consiste à définir le délai d'expiration de la connexion sur une valeur légèrement supérieure à un multiple de 3, puisque la taille par défaut de la fenêtre de retransmission des paquets TCP est de 3.

Dans le domaine du proxy crawler, on rencontre souvent le problème de timeout des requêtes. Le code y est bloqué, aucune erreur n'est signalée et il n'y a pas de réponse aux requêtes.

Recommandations associées : "Tutoriel vidéo Python"

Le traitement habituel consiste à ajouter un délai d'attente à l'instruction requêtes.get() pour limiter le temps de requête.

req = requests.get(url, headers=headers, proxies=proxies, timeout=5)

Si vous constatez que le problème de non-réponse à long terme existe toujours après avoir défini timeout=5, vous pouvez affiner les paramètres dans timeout

Après avoir effectué les modifications suivantes, le problème disparaîtra

req = requests.get(url, headers=headers, proxies=proxies, timeout=(3,7))

le délai d'expiration passe dans un tuple (3,7). Le premier chiffre est le délai d'expiration de la connexion et le deuxième chiffre est le délai d'attente de lecture

Si rencontré. lors de l'utilisation du message d'erreur timeout ValueError (similaire à : ValueError : Timeout value connect was Timeout(connect=2.0, read=2.0, total=None), mais il doit s'agir d'un int ou d'un float. ), c'est la version python-requests Un bug dans la version 2.4.3-4 nous oblige à mettre à jour les requêtes

pip install -U requests

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn