Python - повторное использование соединения
Когда клиент делает действительный запрос к серверу, между ними устанавливается временное соединение для завершения процесса отправки и получения. Но есть сценарии, в которых необходимо поддерживать соединение, поскольку необходимы автоматические запросы и ответы между программами, которые обмениваются данными. Возьмем, к примеру, интерактивную веб-страницу. После загрузки веб-страницы необходимо отправить данные формы или загрузить дополнительные компоненты CSS и JavaScript. Соединение необходимо поддерживать в рабочем состоянии для повышения производительности и непрерывной связи между клиентом и сервером.
Python предоставляет urllib3модуль, в котором были методы для обеспечения повторного использования соединения между клиентом и сервером. В приведенном ниже примере мы создаем соединение и выполняем несколько запросов, передавая разные параметры с запросом GET. Мы получаем несколько ответов, но мы также подсчитываем количество подключений, использованных в процессе. Как мы видим, количество подключений не меняется, подразумевая повторное использование подключения.
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
Когда мы запускаем указанную выше программу, мы получаем следующий результат -
Response Status: 200
Header: text/javascript; charset=utf-8
Python: 211
php: 211
Number of Connections: 1
Number of requests: 2