Asynchronous vs Synchronous Python Performance Analysis
Introduction
This article is the second part of a series on using Python for developing asynchronous web applications. The first part provides a more in-depth coverage of concurrency in Python and asyncio
, as well as aiohttp
.
If you’d like to read more about Asynchronous Python for Web Development, we’ve got it covered.
Due to the non-blocking nature of asynchronous libraries like aiohttp
we would hope to be able to make and handle more requests in a given amount of time compared to analogous synchronous code. This is due to the fact that asynchronous code can rapidly switch between contexts in order to minimize time spent waiting for I/O.
Client-Side vs Server-Side Performance
Testing client-side performance of an asynchronous library like aiohttp
is relatively straightforward. We choose some website as reference, and then make a certain number of requests, timing how long it takes our code to complete them. We’ll be looking at the relative performance of aiohttp
and requests
when making requests to https://example.com
.
Testing server-side performance is a little more tricky. Libraries like aiohttp
come with built-in development servers, which are fine for testing routes on a local network. However, these development servers are