HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
dieseldev
diesel
Python2010–2014
dieseldev / diesel

diesel

Greenlet-based event I/O Framework for Python

5Distinct people
8Mentions
0Explicit recommenders
580GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Greenlet-based event I/O Framework for Python

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 5:04:57 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year8 dated mentions

Observed mentions: 2010-07-07 23:14:05 UTC to 2014-06-06 01:09:52 UTC.

012342010-01-01 00:00:00 UTC to 2011-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments20102011-01-01 00:00:00 UTC to 2012-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2012-01-01 00:00:00 UTC to 2013-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20122013-01-01 00:00:00 UTC to 2014-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2014

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20102010-01-01 00:00:00 UTC2011-01-01 00:00:00 UTC404
20112011-01-01 00:00:00 UTC2012-01-01 00:00:00 UTC101
20122012-01-01 00:00:00 UTC2013-01-01 00:00:00 UTC101
20132013-01-01 00:00:00 UTC2014-01-01 00:00:00 UTC000
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC202

What Hacker News says

8 sources
I added an implementation [1] in diesel [2][3], which uses select.epoll (or libev, on non-Linux systems) and got a around 150x speedup [4]. I only repeated the tests a few times (but they were all close) and didn't install the Go compiler so I could test against Go (I'd be interested to see how this stacks up on your machine). Like you say in your post, it's nice to have something wrap up the bother of epoll for you. [1] https://github.com/wmoss/Key-Value-Polyglot [2] diesel.io [3] https://github.com/jamwt/diesel [4] The first run is against the diesel one wmoss@wmoss-mba:~/etc/Key-Value-Polyglot$ time python test.py real 0m0.134s user 0m0.040s sys 0m0.020s wmoss@wmoss-mba:~/etc/Key-Value-Polyglot$ time python test.py real 0m20.164s user 0m0.096s sys 0m0.072s
In In-memory key-value store in C, Go and Python
This may be just my impression, but if someone really had a need for an async server, they wrote it in something else before. I'm not saying node.js is bad in any way, but there are more established alternatives in languages people already use. They were used before and they did the job. Is node.js going to be a temporary thing?... we'll see. Is it that different from what we already had? (compare http://github.com/jamwt/diesel/blob/master/examples/http.py and http://nodejs.org/api.html#synopsis-0 ) not really.
In Why node.js excites me
Yep, this was a big part of why I eventually abandoned generators in diesel in favor of a greenlet-based approach. http://github.com/jamwt/diesel/commit/2fc64f9d50bc6f9a5cfff0... I'd worked my way through all the problems having to do with simulating a generator-based "stack" and it was not pretty--exception handling in particular with these "fake stacks" was hard to make behave the usual pythonic way. I wasn't eager to give up on a generators, but I had to eventually concede that the practical quality of the project was more important than the founding idea. Everything has been faster, easier to program, and more stable since giving up on generators and moving to the greenlet library. At bump, we just launched version 2.0 of our app, running our backends 100% on diesel2/greenlets: http://mashable.com/2010/07/26/bump-2-0/
In Monocle - An async programming framework with a blocking look-alike syntax
I'm a big fan of MongoDB, and I think its replicated durability characteristics are good enough for many classes of applications. If you could lose a minute of data and have it just be "bad" instead of "customer enraging and business threatening", then it's a very nice database system. However--I do think the decision to make writes "fire and forget" is just a mistake. If you use abstractions like a connection pool under heavy concurrency, you can get unpredictable behavior in terms of when the data is "actually there." For example, all in one thread: with connection pool: do_write operation A do other things... with connection pool: read something, assuming A has been applied Specifically, the fact that you get an arbitrary connection out of the pool means you cannot be sure that the database has completely processed operation A before
Read the rest
executing your new query. MongoDB has a "safe=" flag in their Python bindings that implements the project's official (http://www.mongodb.org/display/DOCS/Last+Error+Commands#Last...) recommendation for "it is written" consistency. It's a bit of a hack, but it calls "getLastError()" on the connection that does the write before returning from the update()/save()/insert()/delete() call. I think it's astonishing this behavior isn't the default. In fact, I recently updated diesel's bindings to be safe=True, so getLastError() is always executed on write operations to make sure they succeeded before the call returns: http://github.com/jamwt/diesel/commit/95cd71d82ffc5c308060b6...
In MongoDB Performance & Durability

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.