Gunicorn
I wish Gunicorn with Gevent had won the “async vs. coroutine Python” battle. The Developer UX is so much better with coroutines and just as scalable as asyncio (async/await).<p>Many people misunderstand asyncio thinking it will make your code faster, when what it does do is make it more scalable (if you have allot of IO for example). But at the expense of developer UX. Mixing async and sync code within Python is a nightmare. I am completely unconvinced by the move to asyncio everywhere in Python.<p>I have been using Gunicorn with Gevent for nearly 10 years and never had a problem with it.<p>Languages like JavaScript that have been async from the start work well as you (mostly) only have an async api.<p><a href="https://docs.gunicorn.org/en/latest/design.html#async-workers" rel="nofollow">https://docs.gunicorn.org/en/latest/design.html#async-worker...</a><p><a href="http://www.gevent.org/" rel="nofollow">http://www.gevent.org/</a>