Maison > développement back-end > Tutoriel Python > Que signifie le délai d'attente de la demande ?

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

爱喝马黛茶的安东尼
Libérer: 2020-07-13 16:34:14
original
52817 Les gens l'ont consulté

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)
Copier après la connexion

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))
Copier après la connexion

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
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal