2016-07-02 13 views
0

python-requestsモジュールに関する質問があります。ドキュメントによるとpython-requestsモジュール内でキープアライブ

urllib3のおかげで、キープアライブはセッション内で100%自動です!セッション内でリクエストを行うと、自動的に適切な接続が再利用されます。

私のサンプルコードは次のようになります。

def make_double_get_request(): 
    response = requests.get(url=API_URL, headers=headers, timeout=10) 
    print response.text 
    response = requests.get(url=API_URL, headers=headers, timeout=10) 
    print response.text 

しかし、私は受け取ったログは、すべての新しいHTTP接続が開始されて要求することを伝えます:

INFO:requests.packages.urllib3.connectionpool:Starting new HTTP connection (1): url 
DEBUG:requests.packages.urllib3.connectionpool:"GET url HTTP/1.1" 200 None 
response text goes here 
INFO:requests.packages.urllib3.connectionpool:Starting new HTTP connection (1): url 
DEBUG:requests.packages.urllib3.connectionpool:"GET url HTTP/1.1" 200 None 
response text goes here 

私が何か間違ったことをやっていますか? wiresharkでパケットを見ると、実際にはキープアライブが設定されているようです。

答えて

2

Session() instanceを使用:

def make_double_get_request(): 
    session = requests.Session() 
    response = session.get(url=API_URL, headers=headers, timeout=10) 
    print response.text 
    response = session.get(url=API_URL, headers=headers, timeout=10) 
    print response.text 

requestsトップレベルHTTPメソッド関数は、接続の再使用を防止する、新しいSessionオブジェクトを毎回作成する便利なAPIです。ドキュメントから

Sessionオブジェクトを使用すると、リクエスト間で特定のパラメータを保持することができます。また、セッションインスタンスからのすべてのリクエストにCookieが残っており、urllib3の接続プーリングを使用します。

関連する問題