Asynchronous versus synchronous
Switching to an asynchronous model means you will need to use asynchronous code all the way down.
For example, if your microservice uses a Requests
library that is not asynchronous, every call made to query an HTTP endpoint will block the event loop, and you will not benefit from asynchronicity.
And making an existing project asynchronous is not an easy task because it changes the design completely. Most projects that want to support asynchronous calls are redesigning everything from scratch.
Note
The good news is that there are more and more asynchronous libraries available, which can be used to build a microservice. On PyPI, you can search for aio
or asyncio
.
This wiki page (https://github.com/python/asyncio/wiki/ThirdParty) is also a good place to look at.
Here's a short list of those that are relevant to building microservices:
aiohttp.Client
: ;Can replace therequests
packageaiopg
: ;PostgreSQL driver on top of Psycopgaiobotocore
: ;AWS client--might be merged...