aboutsummaryrefslogtreecommitdiffstats
path: root/toys/brhute/twisted_http_simultaneous.py
diff options
context:
space:
mode:
Diffstat (limited to 'toys/brhute/twisted_http_simultaneous.py')
-rw-r--r--toys/brhute/twisted_http_simultaneous.py39
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()
+