requests is probably a common answer. That's one of my favorites. And I actually use it in the book is one of the few external libraries that I use, even though there is a library that does pretty much the same in the standard library. So you can use requests with threads for doing very fast HTTP clients. The only thing that I wish requests had and it doesn't is support for asynchronous requests.