Python has had async for 10 years – why isn't it more popular?

https://news.ycombinator.com/rss Hits: 12
Summary

The Python Documentary dropped this morning. In the middle of the documentary, there’s a dramatic segment about how the transition from Python 2 to 3 divided the community (spoiler alert: it didn’t in the end). The early versions of Python 3 (3.0-3.4) were mostly focused on stability and offering pathways for users moving from 2.7. Along came 3.5 in 2015 with a new feature: async and await keywords for executing coroutines. Ten years and nine releases later, Python 3.14 is weeks away. Whilst everyone will be distracted by the shiny, colorful REPL features in 3.14, there are some big announcements nestled in the release notes — both related to concurrency and parallelism PEP779 Free-Threading is Officially Supported. PEP 734: Multiple interpreters in the stdlib Both of these features are huge advancements in how Python can be used to execute concurrent code. But if async has been here for 10 years, why do we need them? The killer use-case for async is web development. Coroutines lend well to out-of-process network calls, like HTTP requests and database queries. Why block the entire Python interpreter waiting for a SQL query to run on another server? Yet, among the three most popular Python web frameworks, async support is still not universal. FastAPI is async from the ground-up, Django has some support, but is “still working on async support” in key areas like the ORM (database). Then Flask is and probably always will be synchronous (Quart is an async alternative with similar APIs). The most popular ORM for Python, SQLAlchemy, only added asyncio support in 2023 (changelog). I posed the question “Why isn’t async more popular” to a couple of other developers to get their thoughts. Christopher Trudeau, co-host of the Real Python Podcast, shared his perspective: Certain kinds of errors get caught by the compiler, others just disappear. Why didn’t that function run? Oops, forgot to await it. Error in the coroutine? Did you remember to launch with the right params, if not,...

First seen: 2025-09-02 17:52

Last seen: 2025-09-03 05:54