[Twisted-Python] Two main loops
jasper at peak.org
Mon Nov 12 13:47:50 EST 2007
Jean-Paul Calderone wrote:
> On Mon, 12 Nov 2007 08:58:55 -0800, Jasper <jasper at peak.org> wrote:
>> Maarten ter Huurne wrote:
>>> Why would that happen?
>>> Twisted never blocks; if it has to wait for something (such as a
>>> transmission buffer becoming ready to accept more data), it will
>>> register a callback and the reactor will continue (and call your
>>> rendering code).
>> Maybe I'm misunderstanding what's going on underneath, but Twisted
>> sure seems to block while I send one large chunk of data.
> There are a lot of different pieces in any non-trivial program. There
> also at least a couple different meanings for the word "block".
[further elaboration snipped]
I think the confusion here is stemming from us attaching different
meanings to "Twisted". I've been meaning the entire package, i.e. the
modules I got when I installed Twisted. You (Glyph, Maarten, etc.) seem
to mean only the lower level inner bits, like reactor. I'd actually
understood this when I sent the above, and I apologize for the snarky
To get to the point, I actually do feel that the fault lies with
Twisted, or more specifically PB. Code using PB wants to be as unaware
of the details of network transmission as possible. It certainly
doesn't want to slice things into a bazillion chunks for individual
transmission, and then puzzle them back together on the other end.
IMHO it makes more sense for PB to understand it shouldn't block, and to
chunk and schedule its serialization (and unserialization) in the same
manner as the TCP packets sent underneath. I'm guessing this would make
for cleaner separation, and more general usefulness.
Also, let me clarify that I'm not suggesting that someone else do this,
nor bitching and moaning about what I'm getting out of a free project;
it's something I intend to do myself as I have time.
More information about the Twisted-Python