Re: [ZODB-Dev] ZEO ClientStorage's use of the asyncore main loop (was [Fwd: Re: [Zope3-dev] Twisted Publisher and Zope 2])

2005-12-09 Thread Shane Hathaway

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@zope.org
http://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] ZEO ClientStorage's use of the asyncore main loop (was [Fwd: Re: [Zope3-dev] Twisted Publisher and Zope 2])

2005-12-09 Thread Jim Fulton

Shane Hathaway wrote:

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.


Historical note: asyncore didn't support private event loops either
until I added the extra argument to the constructor.  I'm not sure why
you need to pass the map to anything but the constructor.  Oddly. most,
but not all of the methods that take a map, default to the one set in the
constructor.  I don't really remember the details

Jim

--
Jim Fulton   mailto:[EMAIL PROTECTED]   Python Powered!
CTO  (540) 361-1714http://www.python.org
Zope Corporation http://www.zope.com   http://www.zope.org
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zodb-dev