web-dev-qa-db-ja.com

Pythonキープアライブを使用してリクエストを高速化

HTTPプロトコルでは、キープアライブを使用して1つのソケットで多くの要求を送信し、サーバーから一度に応答を受信できるため、プロセス全体が大幅に高速化されます。 python requests lib?

48
PaulOverflow

はいあります。つかいます - 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

ドロップされた接続をリセットする、つまり、サーバーへの接続を再確立して新しい要求を行うことに注意してください。

88
metatoaster