[Twisted-Python] [Fwd: Re: [Zope3-dev] Twisted as server]

Itamar Shtull-Trauring twisted at itamarst.org
Tue Feb 12 07:02:16 EST 2002


Glyph Lefkowitz wrote:


> That was quite a bit of text, if I understand properly -- he was saying
> that you ought to be able to do proto.transport.write =
> proto.transport.socket.makefile().write, with some additional buffering
> trickery for optimization?

I think so, yes. Plus some architectural stuff about how they do 
multiple requests per connection (the task stuff.)

Our current transport code would in fact work with threads without any 
changes (i.e. you could do transport.write in a thread), if not for the 
fact that the event loop integration (addWriter, addReader) isn't thread 
safe.

Since in threaded mode the Selectable doesn't need to be in the event 
loop anyway, we just need a flush method for sync mode and a "switch 
to/from sync mode" method and we could have writing to transports be 
usable from threads (only one thread at a time, of course.)

Another nice thing is the Buffering stuff, which lets you have a buffer 
that is on disk as well - it would make producers less needed when 
sending large amounts of data. It would also improve performance of 
writing large amounts of data on fast connection, since without 
producers we can write-at-once.


See:
http://cvs.zope.org/Zope3/lib/python/Zope/Server/?only_with_tag=Zope-3x-branch

DualModeChannel.DualModeChannel is the sync/async switchable transport.

Also, I'm starting to feel jealous of Zope3's amount of unittests...





More information about the Twisted-Python mailing list