[Twisted-web] web2.client pipelining (was: Web2: What is to be Done)

James Y Knight foom at fuhm.net
Thu Sep 14 13:36:26 CDT 2006


On Sep 13, 2006, at 2:00 PM, Scott Lamb wrote:
> I hadn't noticed until now that y'all have added a  
> twisted.web2.client to trunk. (Copied from a web2-client4 branch; I  
> guess the previous castle burned down, fell over, and then sank  
> into the swamp. ;)
>
> <pipelining/retry/etc>

The client that's in there right now is a low-level http client. The  
higher level web client (the connection manager, queuing, pooling,  
etc.) is not completed. That is where the retry logic and the  
determination of which requests can be pipelined and which cannot  
would go. Please note that even *keepalive* can only be (reliably)  
used for idempotent actions. For example, client sends request A,  
gets response A, sends request B, but at the same time, server closes  
the connection from a timeout condition.

The twisted.web2.client.HTTPClientProtocol.submitRequest has a  
keyword arg "closeAfter", which defaults to True. Thus, without you  
doing anything to change it, there is no keepalive and no pipelining.  
Each connection will only be usable for one request. Pipelining and  
keepalive features should really only be enabled when a request is  
submitted by a client manager which is able to handle the appropriate  
failure retry conditions.

James




More information about the Twisted-web mailing list