You’re on the right track! The purpose of asyncio is to not block other threads because of a longer I/O operation, which in this case is a request. Working with multiple threads isn’t necessarily an issue if the threads don’t depend on each other/aren’t manipulating the same data. But yes, because the requests library is not asynchronous by design we can overcome this by spawning a thread for each request being made and run all of them at once without having to worry about each one finishing before starting the next one.