2016-07-02 2 views
0

python-requests 모듈에 대한 질문이 있습니다. 문서에 따르면python-requests 모듈 내에서 keep-alive

덕분에 urllib3 덕분에 세션 내에서 keep-alive가 100 % 자동으로 수행됩니다. 세션 내에서 요청하면 해당 연결이 자동으로 재사용됩니다!

내 샘플 코드는 다음과 같습니다

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 

내가 뭔가 잘못하고 있습니까 :

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 연결이 시작되는 것을 말한다? wireshark로 패킷을 살펴보면 실제로 keep-alive가 설정되어있는 것으로 보입니다.

답변

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 인스턴스에서 만들어진 모든 요청에 ​​대해 쿠키를 유지하고 urllib3의 연결 풀링을 사용합니다.