["python","timeout","python-requests"]
Timeout for Python requests.get() entire response

I'm gathering statistics on a list of websites, and I'm using Requests for it for simplicity. Here is my code: data = [] websites = ['http://google.com', 'http://bbc.co.uk'] for w in websites: r = requests.get(w, verify=False) data.append((r.url, len(r.content), r.elapsed.total_seconds(), str([(l.status_code, l.url) for l in r.history]), str(r.headers.items()), str(r.cookies.items()))) Now, I want requests.get to timeout after 10 seconds, so the loop doesn't get stuck. This question has been of interest before too, but none of the answers were clean. I hear that maybe not using Requests is a good idea, but then how should I get the nice things Requests offer (the ones in the tuple)?
What about using 'eventlet'? If you want to timeout the request after 10 seconds, even if data is being received, this snippet will work for you: import requests import eventlet eventlet.monkey_patch() with eventlet.Timeout(10): requests.get("http://ipv4.download.thinkbroadband.com/1GB.zip", verify=False)