Heim  >  Artikel  >  Backend-Entwicklung  >  Beispiel-Tutorial für einen Python-HTTP-Client mit langer Verbindung

Beispiel-Tutorial für einen Python-HTTP-Client mit langer Verbindung

PHP中文网
PHP中文网Original
2017-06-20 14:48:303323Durchsuche

Hintergrund:

Online-Maschinen, Zugriffsprotokolle müssen gefiltert und an eine andere API gesendet werden
Am Anfang war es ein einzelner Prozess, der nach der Umstellung auf Multi-Prozess-Versand zu ineffizient war , es tauchte gelegentlich ein Ausnahmefehler auf (ich habe vergessen, einen Screenshot zu machen...)
Kurz gesagt, der Port reicht nicht aus und der Fehler wird gemeldet

Ursache:

Jedes Protokoll ist eine an die API gesendete Anfrage, und kurze Verbindungen erzeugen eine große Menge an time_wait-Status und belegen eine große Anzahl von Ports
Die Kernel-Optimierung einer großen Anzahl an time_wait-Status, die durch diese hohe Parallelität verursacht wird, ist grundsätzlich nutzlos. Später wurde es in eine lange Verbindung geändert, um das Problem zu lösen

Der Schlüsselcode der ersten Version der Kurzverbindungsversion lautet wie folgt

Aufgrund der spezifischen Geschäftsinformationen ist nur der Schlüssel angegeben Ein Teil des Codes wurde veröffentlicht

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)

Die geänderte Version für lange Verbindungen lautet wie folgt:

Verwendung der Anforderungsbibliothek

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

Das obige ist der detaillierte Inhalt vonBeispiel-Tutorial für einen Python-HTTP-Client mit langer Verbindung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Python-Numpy-BibliothekNächster Artikel:Python-Numpy-Bibliothek