Python - Riutilizzo della connessione

Quando un client effettua una richiesta valida a un server, viene stabilita una connessione temporanea tra di loro per completare il processo di invio e ricezione. Ma ci sono scenari in cui la connessione deve essere mantenuta in vita poiché sono necessarie richieste e risposte automatiche tra i programmi che stanno comunicando. Prendiamo ad esempio una pagina web interattiva. Dopo che la pagina Web è stata caricata, è necessario inviare i dati di un modulo o scaricare ulteriori componenti CSS e JavaScript. La connessione deve essere mantenuta attiva per prestazioni più veloci e una comunicazione ininterrotta tra il client e il server.

Python fornisce urllib3modulo che aveva metodi per prendersi cura del riutilizzo della connessione tra un client e un server. Nell'esempio seguente creiamo una connessione ed effettuiamo più richieste passando diversi parametri con la richiesta GET. Riceviamo più risposte ma contiamo anche il numero di connessioni utilizzate nel processo. Come vediamo il numero di connessione non cambia implicando il riutilizzo della connessione.

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

Quando eseguiamo il programma sopra, otteniamo il seguente output:

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