[Twisted-Python] Two main loops

Jasper jasper at peak.org
Mon Nov 12 16:29:51 MST 2007


Nitro wrote:
> Am 12.11.2007, 19:47 Uhr, schrieb Jasper <jasper at peak.org>:
>
>> 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.
>
> I think this is a) not possible and b) not desirable. It's not 
> possible because pb sends a single large chunk of data over tcp. The 
> OS is responsible to break everything down into individual tcp packets 
> and puzzle them together at the other end. The whole packet thing is 
> not visible to pb. So if you want pb to split your data, then do 
> splitted callRemotes.
I'm not thinking of splitting up packets.  I'm merely thinking of 
splitting up serialization, and not splitting the data.

> It's not desirable because you don't want your program to be stalled 
> at uncontrollable times when the OS decides to send 20 tcp packets at 
> once. You want to spread the load as evenly as possible and you'll 
> have to do this manually.
> Which kind of game are you working on and how many 
> connections/bandwidth does it have? I haven't encountered the problems 
> you mention in my project.

Turn based strategy.  Here's the (rather out of date) website if your 
curious:
http://brass-golem.com/

-Jasper





More information about the Twisted-Python mailing list