Подтвердить что ты не робот

Запросы Python ускоряются с использованием keep-alive

В протоколе HTTP вы можете отправлять много запросов в один сокет, используя keep-alive, а затем сразу получать ответ от сервера, чтобы значительно ускорить весь процесс. Есть ли способ сделать это в python-запросах lib? Или есть ли какие-либо другие способы ускорить это, хорошо используя запросы lib?

4b9b3361

Ответ 1

Да, есть. Используйте requests.Session и он будет продолжать жить по умолчанию.

Думаю, я должен включить быстрый пример:

import logging
import requests

logging.basicConfig(level=logging.DEBUG)
s = requests.Session()
s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
s.get('http://httpbin.org/cookies/set/anothercookie/123456789')
r = s.get("http://httpbin.org/cookies")
print(r.text)

Вы заметите, что это сообщение журнала происходит

INFO:requests.packages.urllib3.connectionpool:Starting new HTTP connection (1): httpbin.org
DEBUG:requests.packages.urllib3.connectionpool:"GET /cookies/set/sessioncookie/123456789 HTTP/1.1" 302 223
DEBUG:requests.packages.urllib3.connectionpool:"GET /cookies HTTP/1.1" 200 55
DEBUG:requests.packages.urllib3.connectionpool:"GET /cookies/set/anothercookie/123456789 HTTP/1.1" 302 223
DEBUG:requests.packages.urllib3.connectionpool:"GET /cookies HTTP/1.1" 200 90
DEBUG:requests.packages.urllib3.connectionpool:"GET /cookies HTTP/1.1" 200 90

Если вы немного подождали и повторите последний вызов get

INFO:requests.packages.urllib3.connectionpool:Resetting dropped connection: httpbin.org
DEBUG:requests.packages.urllib3.connectionpool:"GET /cookies HTTP/1.1" 200 90

Обратите внимание, что он сбрасывает сброшенное соединение, т.е. восстанавливает соединение с сервером для создания нового запроса.