Python - Wiederverwendung von Verbindungen

Wenn ein Client eine gültige Anforderung an einen Server sendet, wird eine temporäre Verbindung zwischen ihm hergestellt, um den Sende- und Empfangsprozess abzuschließen. Es gibt jedoch Szenarien, in denen die Verbindung aufrecht erhalten werden muss, da automatische Anforderungen und Antworten zwischen den kommunizierenden Programmen erforderlich sind. Nehmen Sie zum Beispiel eine interaktive Webseite. Nach dem Laden der Webseite müssen Formulardaten übermittelt oder weitere CSS- und JavaScript-Komponenten heruntergeladen werden. Die Verbindung muss für eine schnellere Leistung und eine ununterbrochene Kommunikation zwischen dem Client und dem Server am Leben gehalten werden.

Python bietet urllib3Modul mit Methoden zur Wiederverwendung von Verbindungen zwischen einem Client und einem Server. Im folgenden Beispiel stellen wir eine Verbindung her und stellen mehrere Anforderungen, indem wir verschiedene Parameter mit der GET-Anforderung übergeben. Wir erhalten mehrere Antworten, zählen aber auch die Anzahl der Verbindungen, die im Prozess verwendet wurden. Wie wir sehen, ändert sich die Anzahl der Verbindungen nicht, was die Wiederverwendung der Verbindung impliziert.

from urllib3 import HTTPConnectionPool
pool = HTTPConnectionPool('ajax.googleapis.com', maxsize=1)
r = pool.request('GET', '/ajax/services/search/web',
                 fields={'q': 'python', 'v': '1.0'})
print 'Response Status:', r.status
# Header of the response
print 'Header: ',r.headers['content-type']
# Content of the response
print 'Python: ',len(r.data) 
r = pool.request('GET', '/ajax/services/search/web',
             fields={'q': 'php', 'v': '1.0'})
# Content of the response			 
print 'php: ',len(r.data) 
print 'Number of Connections: ',pool.num_connections
print 'Number of requests: ',pool.num_requests

Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe:

Response Status: 200
Header:  text/javascript; charset=utf-8
Python:  211
php:  211
Number of Connections:  1
Number of requests:  2