Top all-time · #1799
Michael Bayer
Personal blog · techspot.zzzeek.org · on HN as zzzeekprogrammingdata
Michael Bayer writes zzzeek, a personal blog at techspot.zzzeek.org about programming and data. Since 2010, 40 different Hacker News readers have linked it 64 times, most often “Asynchronous Python and Databases”. The last post was in 2016, but the archive is still widely read.
Sometimes recommended · 11 of 34 sampled comments recommend it?
Why HN links it
HN readers link Mike Bayer's 2015 'Asynchronous Python' post, cited against asyncio for database and web work, and his SQLAlchemy and Python writing.
Summarised by Claude from a sample of 34 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
Most-linked posts?
- Asynchronous Python and Databases12 people · 17 mentions · first linked 2015-02-15
- Asynchronous Python and Databases12 people · 16 mentions · first linked 2019-11-29
- Gerrit Is Awesome2 people · 3 mentions · first linked 2019-01-27
- The Absolutely Simplest Consistent Hashing Example2 people · 2 mentions · first linked 2012-07-08
- SQLAlchemy performance analyzed with RunSnakeRun (SQLA v0.5, v0.6 and v0.7)2 people · 2 mentions · first linked 2010-12-14
- Patterns Implemented by SQLAlchemy2 people · 2 mentions · first linked 2012-02-08
- Magic, a "new" ORM2 people · 2 mentions · first linked 2011-05-31
What Hacker News says?
I think I have some relevant experience here. We host all of our projects on github: https://github.com/sqlalchemy/ yet we also use gerrit! https://gerrit.sqlalchemy.org/ users send us pull requests, and they never have to deal with Gerrit ever. We use a custom integration, the source code to which is here: https://github.com/sqlalchemyorg/publishthing/tree/master/pu... and then we mostly bidirectional synchronizati…
Comment linking /2016/04/21/gerrit-is-awesome/
on “Wikimedia is moving to Gitlab”Submitted Asynchronous Python and Databases as a story · 214 points
HN discussionBy the way Mike I think https://techspot.zzzeek.org/2015/02/15/asynchronous-python-a... is still one of the best articles on the topic of "python and concurrency". So many important insights for real-world engineering. Thanks for all your work in the Python ecosystem!
Comment linking /2015/02/15/asynchronous-python-and-databases/
on “A viable solution for Python concurrency”Submitted SQLAlchemy performance analyzed with RunSnakeRun (SQLA v0.5, v0.6 and v0.7) as a story · 34 points
HN discussion(Mike Bayer is zzzeek: http://techspot.zzzeek.org/ )
Comment linking /
on “What ORMs have taught me: just learn SQL (2014)”Submitted Supporting a (Very Interesting) New Database as a story · 7 points
HN discussionGood article, but I can't help but notice a gaping hole in the benchmark -- why was there no attempt to run gunicorn in multi-threaded mode? The article has a link to https://techspot.zzzeek.org/2015/02/15/asynchronous-python-a... , but failed to mention the key takeaway from the article: > threaded code got the job done much faster than asyncio in every case
Comment linking /2015/02/15/asynchronous-python-and-databases/
on “12 requests per second: A realistic look at Python web frameworks”Submitted Server Side Templates and API Centric Development as a story · 7 points
HN discussionHi, take a look at my benchmarks from five years ago at https://techspot.zzzeek.org/2015/02/15/asynchronous-python-a... . The extra variable with Python is that it's a very CPU-heavy interpreted language and it's really unlikely for an application to be significantly IO bound with a database server on the same network within the realm of CRUD-style queries. asyncio was significantly slower than threads (noting they'…
Comment linking /2015/02/15/asynchronous-python-and-databases/
on “Async Python is not faster”Submitted Patterns Implemented by SQLAlchemy as a story · 7 points
HN discussionI am SUPER happy someone else is finally looking at this. It is long past time that the reflexive use of asycnio or systems like gevent/eventlet for no other reason than "hand-wavy SPEED" come to an end. That web applications that literally serve just one user at at time are built in Tornado for "speed". (my example for this is the otherwise excellent SnakeViz: https://jiffyclub.github.io/snakeviz/ which IMO should…
Comment linking /2015/02/15/asynchronous-python-and-databases/
on “Async Python is not faster”Submitted The Absolutely Simplest Consistent Hashing Example as a story · 3 points
HN discussionThe only reasonable use case for asyncio is an API gateway or similar, when you issue a huge amount of HTTP requests, do very little CPU intensive tasks and waiting for I/O all the time. Any other use-case you are better off going with the simplicity of a sync framework like Flask. For databases you are way worse with async, see why from the Python database god himself: https://techspot.zzzeek.org/2015/02/15/asynchr…
Comment linking /2015/02/15/asynchronous-python-and-databases/
on “There are no open issues or pull requests on Flask”Submitted Guide to Python 3 Porting as a story · 3 points
HN discussion> I want to scream every time somebody suggests threading as a solution to non-blocking database calls and HTTP requests. Rather than screaming, perhaps read this (from the developer of the Python world's most popular ORM) to see why they might be suggesting it: http://techspot.zzzeek.org/2015/02/15/asynchronous-python-an... tl;dr: If your database is properly setup and provisioned it shouldn't be a source of blocki…
Comment linking /2015/02/15/asynchronous-python-and-databases/
on “Interview with Ryan Dahl, Creator of Node.js”Submitted Asynchronous Python and Databases as a story · 2 points
HN discussionhey - thanks for replying. if Pypy + asyncio was available, would you have built everything using that stack ? There have been all these benchmarks that asyncio is so much slower than threads [1] How would you compare that with Go ? [1] http://techspot.zzzeek.org/2015/02/15/asynchronous-python-an...
Comment linking /2015/02/15/asynchronous-python-and-databases/
on “From Python to Go and Back Again”Submitted Gerrit Is Awesome as a story · 2 points
HN discussion1. https://news.ycombinator.com/item?id=23496994 2. https://techspot.zzzeek.org/2015/02/15/asynchronous-python-a...
Comment linking /2015/02/15/asynchronous-python-and-databases/
on “Comparison of Rust async and Linux thread context switch time and memory use”Submitted Using Beaker for Caching? Why You'll Want to Switch to dogpile.cache as a story · 2 points
HN discussionyes, not just the memory... for models with lots of fields, in Python+Django, the time overhead of instantiating these complex heavyweight objects can really add up if you have a whole 'page' of them I always figured the main overhead was doing I/O with the db, but in these cases it's not always so interesting blog post about this from the creator of SQLAlchemy: http://techspot.zzzeek.org/2015/02/15/asynchronous-pyt…
Comment linking /2015/02/15/asynchronous-python-and-databases/
on “The Marketing Behind MongoDB”Submitted Asynchronous Python and Databases (2015, updated 2020) as a story · 1 points
HN discussionI feel rather underwhelmed by the performance improvement touted by adequate records. Perhaps someone from the rails community can do something like this: http://techspot.zzzeek.org/2010/12/12/a-tale-of-three-profil...
Comment linking /2010/12/12/a-tale-of-three-profiles/
on “Rails 4.2.0 beta1: Active Job, Deliver Later, Adequate Record, Web Console”Submitted Asynchronous Python and Databases as a story · 1 points
HN discussion> It provides no way to "magically speed up the python code". it most certainly does provide many techniques to reduce in-Python computation. Have you read the performance section in the FAQ and worked through the examples given ? Have you looked into baked queries , querying for columns and not objects ? These are often quick wins that make a huge difference. The baked queries concept is going to be much more clean…
Comment linking /files/2015/pymysql_runsnake_network.png
on “ORMs Are Backwards”Submitted SQLAlchemy Enum Recipe as a story · 1 points
HN discussionI use gerrit for everything and this workflow is exactly what it gets you (well, to be clear, my workflow is commit-per-issue resolved, not commit-per-function added, though you could use it that way also). I highly recommend it or a similar tool. I wrote a post three years ago about my switch: https://techspot.zzzeek.org/2016/04/21/gerrit-is-awesome/
Comment linking /2016/04/21/gerrit-is-awesome/
on “Fossil vs Git”Submitted The Absolutely Simplest Consistent Hashing Example as a story · 1 points
HN discussion> Does this imply that the major libraries will all have to be overhauled to make them async-compatible? well, "have to" implies that the community accepts this system as the One True Way to program. Which is why I like to point out that this is unwarranted (but yes, because the explicit async model is what I like to call "viral", in that anything that calls async IO must itself be async, so must the caller of that…
Comment linking /2015/02/15/asynchronous-python-and-databases/
on “Some thoughts on asynchronous Python API design in a post-async/await world”Submitted Pycon 2012 : Hand Coded Applications with SQLAlchemy (slides and video) as a story · 1 points
HN discussion