Python - reutilização de conexão

Quando um cliente faz uma solicitação válida a um servidor, uma conexão temporária é estabelecida entre eles para concluir o processo de envio e recebimento. Mas existem cenários em que a conexão precisa ser mantida ativa, pois há necessidade de solicitações e respostas automáticas entre os programas que estão se comunicando. Considere, por exemplo, uma página da web interativa. Depois que a página da Web for carregada, será necessário enviar os dados do formulário ou baixar outros componentes CSS e JavaScript. A conexão precisa ser mantida ativa para um desempenho mais rápido e uma comunicação ininterrupta entre o cliente e o servidor.

Python fornece urllib3módulo que tinha métodos para cuidar da reutilização da conexão entre um cliente e um servidor. No exemplo abaixo, criamos uma conexão e fazemos várias solicitações passando diferentes parâmetros com a solicitação GET. Recebemos várias respostas, mas também contamos o número de conexões que foram usadas no processo. Como vemos, o número de conexão não muda, implicando na reutilização da conexão.

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 executamos o programa acima, obtemos a seguinte saída -

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