Friday, April 13, 2007

ZODB/ZEO + Pylons?

I'm investigating ZODB for a small project, and am wondering how well it will fit in with a web app which is using Pylons.

I don't see any hurdles so far, but I am a little worried about a comment made in the ZODB/ZEO Programming Guide.

ZEO is written using asyncore, from the Python standard library. It assumes that some part of the user application is running an asyncore mainloop. For example, Zope run the loop in a separate thread and ZEO uses that. If your application does not have a mainloop, ZEO will not process incoming invalidation messages until you make some call into ZEO.


Does this mean that the incoming network buffer could fill up with invalidation messages, if my code doesn't make any calls into ZEO for a period of time?

I can see this possibly happening when running multiple instances of a Pylons app. Hmmm.

1 comment:

Michael Watkins said...

You could always use Durus, instead.

Durus has the same sort of design as ZODB - was designed by people who were using ZODB for a significant application but started to dislike its complexity.


http://www.mems-exchange.org/software/

And: A 2005 PyCon paper on Durus

It has an active user base (not nearly as much as ZODB of course) and best of all the source is not that big - you can read through it all in a single sitting.

Durus does not have to be used with the other parts of the web stack created by the Mems-Exchange folks, although I find Durus and QP make a very good pair for small and large applications.

If you are even a little familiar with ZODB, you'll no doubt find using Durus feels very much the same.

Installing Durus on your system won't pollute your python path with a lot of junk so testing it out is straightforward. You can start a server and an interactive client once installed like this:

durus -s

durus -c

And start to play. From download to install to playtime about 60 seconds.

Popular Posts