← Back to team overview

nova team mailing list archive

Why not python threads?


Without meaning to make the twisted/eventlet flamewar any worse, can I just
ask why we're not just using 'good old threads'?  I've asked Eric Day for
his input based on his great benchmarks (http://oddments.org/?p=494).  My
background is from the Java world, where threads work wonderfully - possibly
even better than async:

I feel like Nova is greatly complicated by the async code, and I'm starting
to see some of the pain of Twisted: it seems that _everything_ needs to be
async in the long run, because if something calls a function that is (or
could be) async, it must itself be async.  So yields and
@defer.inlineCallbacks start cropping up everywhere.

One of the project goals seems to be simplicity of the code, for fewer bugs
and to reduce barriers to entry, and it seems that if we could use 'plain
old Python' that we would better achieve this goal than if we have to use an
async framework.

I know that Python has its issues here with the GIL, but I'm just wondering
whether, in the case of nova, threads might be good enough, and produce much
easier to understand code?  I'm guessing that maybe the project started with
threads - what happened?

Follow ups