aboutsummaryrefslogtreecommitdiffstats
path: root/python-twisted/unassembled/Platform.py
diff options
context:
space:
mode:
Diffstat (limited to 'python-twisted/unassembled/Platform.py')
-rw-r--r--python-twisted/unassembled/Platform.py28
1 files changed, 25 insertions, 3 deletions
diff --git a/python-twisted/unassembled/Platform.py b/python-twisted/unassembled/Platform.py
index 7318703..3b84b30 100644
--- a/python-twisted/unassembled/Platform.py
+++ b/python-twisted/unassembled/Platform.py
@@ -7,10 +7,14 @@ from twisted.web.client import HTTPConnectionPool
from twisted.web.http_headers import Headers
from twisted.internet.ssl import ClientContextFactory
from twisted.internet.task import LoopingCall
+import twisted
+from hashlib import sha256
+import time
pnconn_pool = HTTPConnectionPool(reactor, persistent=True)
-pnconn_pool.maxPersistentPerHost = 100
+pnconn_pool.maxPersistentPerHost = 100000
pnconn_pool.cachedConnectionTimeout = 310
+pnconn_pool.retryAutomatically = True
class Pubnub(PubnubCoreAsync):
@@ -41,7 +45,7 @@ class Pubnub(PubnubCoreAsync):
#self.headers['Accept-Encoding'] = [self.accept_encoding]
self.headers['V'] = [self.version]
- def _request( self, request, callback ) :
+ def _request( self, request, callback, single=False ) :
global pnconn_pool
## Build URL
@@ -53,24 +57,42 @@ class Pubnub(PubnubCoreAsync):
]) for bit in request])
'''
url = self.getUrl(request)
+
agent = ContentDecoderAgent(RedirectAgent(Agent(
reactor,
contextFactory = WebClientContextFactory(),
pool = self.ssl and None or pnconn_pool
)), [('gzip', GzipDecoder)])
+
request = agent.request( 'GET', url, Headers(self.headers), None )
+ if single is True:
+ id = time.time()
+ self.id = id
+
def received(response):
finished = Deferred()
response.deliverBody(PubNubResponse(finished))
return finished
def complete(data):
- callback(eval(data))
+ if single is True:
+ if not id == self.id:
+ return None
+ try:
+ callback(eval(data))
+ except Exception as e:
+ pass
+ #need error handling here
+
+ def abort():
+ pass
request.addCallback(received)
request.addBoth(complete)
+ return abort
+
class WebClientContextFactory(ClientContextFactory):
def getContext(self, hostname, port):
return ClientContextFactory.getContext(self)