Ask HN: Starting a new Python project with async networking
Surveying the async networking landscape for Python has me a bit overwhelmed. There's raw async/await in 3.5+, curio, asyncio, gevent, tornado, stackless, and probably others. If you were starting a new project today, without concern for backward compatibility, what would you use? Python 2.x or 3.x solutions please; I know about Erlang/Go/Node but they aren't a good fit for this project.
6 comments
[ 1.8 ms ] story [ 25.5 ms ] threadThen I would likely switch to gevent or tornado, because more people are involved in those projects.
2. async/await it just an API layer on top of a framework. Thus there is no such thing as raw async/await, it has to be used with a framework of some sort (e.g. Python's built-in asyncio).
3. gevent patches the socket library. Terrible idea. Don't use it.
4. What protocols do you need? Twisted probably has the most implemented, but asyncio and tornado have a bunch too, and not always the same ones.
Protocols - HTTP + some custom stuff on top of TCP.
But that's just me.
Given limited protocol needs, I suggest skimming docs for asyncio, Twisted, and Tornado and seeing which seems to make the most sense to you. For Twisted HTTP client and server to look at are Treq (https://treq.readthedocs.io/en/release-17.8.0/) and Klein (https://klein.readthedocs.io/en/latest/).