← Back to team overview

nova team mailing list archive

Re: Twisted or Eventlet?



I propose that we go ahead and decide to use Eventlet.  We've all had a
chance to talk, the decision isn't going to make itself, and it seems like
we're coalescing around Eventlet:

   - In a long discussion about how to keep our code loosely coupled and
   easy to maintain (see Architecture For Shared Components on the openstack
   list), we concluded that WSGI would be a great solution, and eday has
   prototyped an Eventlet-powered WSGI app talking AMQP to Rabbit.  The Twisted
   WSGI approach apparently isn't stable or standard, but WSGI works just as
   you'd expect in Eventlet.

   - As hazmat points out in the "twisted v. eventlet" thread, you can't use
   pdb with Twisted, while pdb works just as you'd hope in Eventlet.

   - hazmat's experience during his lightning talk (see the same thread) is
   a good datapoint verifying that people unfamiliar with either project will
   probably prefer to work with Eventlet over Twisted: good for recruiting.

   - It's a weaker argument, but it's really hard to find any comparisons
   between Twisted and Eventlet on the web that say Twisted is preferable (has
   anyone found any?)

And as always, there's the argument that Eventlet code is easier to read and
understand, and therefore to maintain.

I'm going to be working on adding the RS API to Nova, and I'm going to
proceed in Eventlet.  If anyone feels strongly that we must use Twisted
instead, speak up; otherwise, shall we call this decision made?

trying-to-build-consensus-ly yrs,

On Tue, Aug 3, 2010 at 8:13 AM, Soren Hansen <soren.hansen@xxxxxxxxxxxxx>wrote:

> On Mon, Aug 02, 2010 at 05:21:23PM -0500, Eric Day wrote:
> > I took a closer look at the inner workings of how Twisted is currently
> > being used, and I think there is still a good chunk of work to be done
> > to make things work properly. For example, both Redis and AMQP modules
> > are not using the Twisted I/O event loop. Both are still issuing sync
> > socket calls in their own libs which could block the entire
> > application.
> Yup, this definitely needs fixing.
> > These things are very doable in Twisted, it will just require using
> > the txRedis and txAMQP modules. It will also introduce more deferreds
> > into the mix since we'll have non-blocking connections dependent on
> > each other. From this perspective, Eventlet may be easier since we
> > could still use the current libraries by patching
> > (http://eventlet.net/doc/patching.html).
> Yes, both python-redis and python-amqplib use Python's standard socket
> module, so they can be patched.
> Does anyone know how eventlet would deal with libvirt calls?
> python-libvirt just calls into libvirt obviously doesn't use Python's
> socket module.
> --
> Soren Hansen
> Systems Architect
> The Rackspace Cloud
> _______________________________________________
> Mailing list: https://launchpad.net/~nova
> Post to     : nova@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~nova
> More help   : https://help.launchpad.net/ListHelp

Confidentiality Notice: This e-mail message (including any attached or
embedded documents) is intended for the exclusive and confidential use of the
individual or entity to which this message is addressed, and unless otherwise
expressly indicated, is confidential and privileged information of Rackspace.
Any dissemination, distribution or copying of the enclosed material is prohibited.
If you receive this transmission in error, please notify us immediately by e-mail
at abuse@xxxxxxxxxxxxx, and delete the original message.
Your cooperation is appreciated.

Follow ups