|
|
Jim Fulton wrote:
Tim and I have discussed this for some time. We think an
asynchronous I/O approach is still appropriate, to handle
asynchronous messages from servers to clients, but we need
to get away from expecting a server to provide the asyncore
main loop needed by ZEO. Rather, ZEO should provide its own
main loop running in a separate thread. (Or, possibly, each
client storage should have its own thread.) Among other things,
this would allow us to get rid of the horribly complex dual-mode
code we have now.
I think that's a good strategy.
(Note that we've had lots of frustration with asyncore. It is
tempting to get rid of that at the same time. However, we still
need an asynchronous I/O framework. This would probably requite
a switch to Twisted. This might be worthwhile, but would almost
certainly entail a lot of risk. I'm not at all sure the benefit
is worth it unless there were some able volunteers who wanted to
work on it.)
Last I checked, Twisted could not support a private event loop. Twisted
assumes there is only one event loop for all threads. I'd like to know
if this has changed. The asyncore module can support a private event
loop, although it's ugly--you have to pass the 'map' argument all over
the place.
Shane
_______________________________________________
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/
ZODB-Dev mailing list - ZODB-Dev@xxxxxxxx
http://mail.zope.org/mailman/listinfo/zodb-dev
|
|