diff options
Diffstat (limited to 'toys/brhute/twisted_http_simultaneous.py')
-rw-r--r-- | toys/brhute/twisted_http_simultaneous.py | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/toys/brhute/twisted_http_simultaneous.py b/toys/brhute/twisted_http_simultaneous.py new file mode 100644 index 0000000..b9de196 --- /dev/null +++ b/toys/brhute/twisted_http_simultaneous.py @@ -0,0 +1,39 @@ +from twisted.internet import reactor +from twisted.internet.defer import Deferred, DeferredList +from twisted.internet.protocol import Protocol +from twisted.web.client import Agent, HTTPConnectionPool + +class IgnoreBody(Protocol): + def __init__(self, deferred): + self.deferred = deferred + + def dataReceived(self, bytes): + pass + + def connectionLost(self, reason): + self.deferred.callback(None) + + +def cbRequest(response): + print 'Response code:', response.code + finished = Deferred() + response.deliverBody(IgnoreBody(finished)) + return finished + +pool = HTTPConnectionPool(reactor, persistent=True) +pool.maxPersistentPerHost = 1 +agent = Agent(reactor, pool=pool) + +def requestGet(url): + d = agent.request('GET', url) + d.addCallback(cbRequest) + return d + +# Two requests to the same host: +requestGet('http://google.com/titi') +requestGet("http://google.com/tata") +requestGet("http://google.com/toto") +requestGet("http://google.com/tralala") + +reactor.run() + |