Python requests speed up using keep-alive
Question: In the HTTP protocol you can send many requests in one socket using keep-alive
and then receive the response from server at once, so that will significantly
speed up whole process. Is there any way to do this in python requests lib? Or
are there any other ways to speed this up that well using requests lib?


Answer: Yes, there is. Use [`requests.Session`](http://docs.python-
requests.org/en/latest/user/advanced/#session-objects) and [it will do keep-
alive by default](http://docs.python-
requests.org/en/latest/user/advanced/#keep-alive).

I guess I should include a quick example:

    
    
    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)
    

You will note that these log message occur

    
    
    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
    

If you wait a little while, and repeat the last `get` call

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

Note that it resets the dropped connection, i.e. reestablishing the connection
to the server to make the new request.

