Maison > développement back-end > Tutoriel Python > tutoriel d'exemple de client de connexion longue http python

tutoriel d'exemple de client de connexion longue http python

PHP中文网
Libérer: 2017-06-20 14:48:30
original
3335 Les gens l'ont consulté

Contexte :

Machines en ligne, les journaux d'accès doivent être filtrés et envoyés à une autre API
Au début, il s'agissait d'un processus unique, qui était trop inefficace après le passage à l'envoi multi-processus. , cela apparaissait occasionnellement dans les logs. Erreur d'exception (j'ai oublié de faire une capture d'écran...)
Bref, le port ne suffit pas et l'erreur est signalée

Cause :

Chaque journal est une requête envoyée à l'API, et les connexions courtes génèrent une grande quantité de statut time_wait, occupant un grand nombre de ports
Le réglage du noyau d'un grand nombre de statuts time_wait provoqué par cette concurrence élevée est fondamentalement inutile. Plus tard, il a été remplacé par une connexion longue pour résoudre le problème

Le code clé de la première version de la version à connexion courte est le suivant

En raison des informations commerciales spécifiques impliquées, seule la clé une partie du code est publiée

import pycurl
where True:
  url=myqueue.get()
  send_msg=pycurl.Curl()
  send_msg.setopt(pycurl.URL,url)
  send_msg.perform()
  print send_msg.getinfo(send_msg.HTTP_CODE)
Copier après la connexion

La version de connexion longue modifiée est la suivante :

Utilisation de la bibliothèque de requêtes

import requests
client=requests.session()
headers = {'Content-Type': 'application/json', 'Connection': 'keep-alive'}
where True:
  url=myqueue.get()
  r=client.get(url,headers=headers)
  print r.status_code
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