3 ms·
Not complete - doesn't include Task Groups [1] In fairness they were only included in asyncio as of Python 3.11, which was released a couple of weeks ago. The
by quietbritishjim 4y ago
Not complete - doesn't include Task Groups [1]
In fairness they were only included in asyncio as of Python 3.11, which was released a couple of weeks ago.
These were an idea originally from Trio [2] where they're called "nurseries" instead of "task groups". My view is that you're better off using Trio, or at least anyio [3] which gives a Trio-like interface to asyncio. One particularly nice thing about Trio (and anyio) is that there's no way to spawn background tasks except to use task groups i.e. there's no analogue of asyncio's create_task() function. That is good because it guarantees that no task is ever left accidentally running in the background and no exception left silently uncaught.
[1] https://docs.python.org/3/library/asyncio-task.html#task-groups https://docs.python.org/3/library/asyncio-task.html#task-gro...
[2] https://github.com/python-trio/trio https://github.com/python-trio/trio
[3] https://anyio.readthedocs.io/en/latest/ https://anyio.readthedocs.io/en/latest/
- dang 4y agoOk, we've taken completeness out of the title above.
- Steltek 4y agoPython, more than other languages, ends up being used in utility scripts on end user devices, where you'll find just about everything. Python's async seems to still have a large swing in available features. Unlike async methods in other languages, semi-serious dabbling in it just for fun is courting a lot of headaches later.
- throwaway81523 4y agoI have such a feeling of tragedy about Python. I wish it had migrated to BEAM or implemented something similar, instead of growing all this async stuff. Whenever I see anything about Python asyncio, I'm reminded of gar1t's hilarious but NSFW rant about node.js, https://www.youtube.com/watch?v=bzkRVzciAZg https://www.youtube.com/watch?v=bzkRVzciAZg . Content warning: lots of swearing, mostly near the end.
- rogers12 4y agoThat's a blast from the past. Incredible that 10 years ago people thought using a thread per request is a good idea because anything else is too hard.
- icedchai 4y agoI'd argue that thread-per-request is even a better idea now, given the massive number of cores and memory in modern servers.
- mrfox321 4y agoHybrid? Request passed to a thread pool. Each thread is juggling coroutines representing in flight requests
- icedchai 4y agoIs that worth the complexity? I like the way Go does it. The runtime is managing the actual threading and async IO as it schedules go routines, but to the programmer it all looks like normal synchronous code.
- throwaway81523 4y agoBEAM has user level processes and can run millions of them in a not too huge VM.
- gpderetta 4y agothread per request doesn't imply kernel threads. And I'm pretty sure even a kernel thread per request in a faster language is going to be better than asincio in python.