Web applications power most of the sites we use on the internet today. If you’ve worked as a developer for a company with an internet presence, you’ve likely worked on a web application at some point in your career. In the world of synchronous Python, this means you’ve used frameworks such as Flask, Bottle, or the extremely popular Django. With the exception of more recent versions of Django, these web frameworks were not built to work with asyncio out of the box. As such, when our web applications perform work that could be parallelized, such as querying a database or making calls to other APIs, we don’t have options outside of multithreading or multiprocessing. This means that we’ll need to explore new frameworks that are compatible with asyncio.