Python twisted.web.client.HTTPConnectionPool() Examples
The following are 30
code examples of twisted.web.client.HTTPConnectionPool().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
twisted.web.client
, or try the search function
.
Example #1
Source File: test_agent.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_wrappedOnPersistentReturned(self): """ If L{client.HTTPConnectionPool.getConnection} returns a previously cached connection, it will get wrapped in a L{client._RetryingHTTP11ClientProtocol}. """ pool = client.HTTPConnectionPool(Clock()) # Add a connection to the cache: protocol = StubHTTPProtocol() protocol.makeConnection(StringTransport()) pool._putConnection(123, protocol) # Retrieve it, it should come back wrapped in a # _RetryingHTTP11ClientProtocol: d = pool.getConnection(123, DummyEndpoint()) def gotConnection(connection): self.assertIsInstance(connection, client._RetryingHTTP11ClientProtocol) self.assertIdentical(connection._clientProtocol, protocol) return d.addCallback(gotConnection)
Example #2
Source File: test_agent.py From learn_python3_spider with MIT License | 6 votes |
def test_nonPersistent(self): """ If C{persistent} is set to C{False} when creating the L{HTTPConnectionPool}, C{Request}s are created with their C{persistent} flag set to C{False}. Elsewhere in the tests for the underlying HTTP code we ensure that this will result in the disconnection of the HTTP protocol once the request is done, so that the connection will not be returned to the pool. """ pool = HTTPConnectionPool(self.reactor, persistent=False) agent = client.Agent(self.reactor, pool=pool) agent._getEndpoint = lambda *args: self agent.request(b"GET", b"http://127.0.0.1") self.assertEqual(self.protocol.requests[0][0].persistent, False)
Example #3
Source File: test_agent.py From learn_python3_spider with MIT License | 6 votes |
def test_cancelGetConnectionCancelsEndpointConnect(self): """ Cancelling the C{Deferred} returned from L{HTTPConnectionPool.getConnection} cancels the C{Deferred} returned by opening a new connection with the given endpoint. """ self.assertEqual(self.pool._connections, {}) connectionResult = Deferred() class Endpoint: def connect(self, factory): return connectionResult d = self.pool.getConnection(12345, Endpoint()) d.cancel() self.assertEqual(self.failureResultOf(connectionResult).type, CancelledError)
Example #4
Source File: test_agent.py From learn_python3_spider with MIT License | 6 votes |
def test_onlyRetryIdempotentMethods(self): """ Only GET, HEAD, OPTIONS, TRACE, DELETE methods cause a retry. """ pool = client.HTTPConnectionPool(None) connection = client._RetryingHTTP11ClientProtocol(None, pool) self.assertTrue(connection._shouldRetry( b"GET", RequestNotSent(), None)) self.assertTrue(connection._shouldRetry( b"HEAD", RequestNotSent(), None)) self.assertTrue(connection._shouldRetry( b"OPTIONS", RequestNotSent(), None)) self.assertTrue(connection._shouldRetry( b"TRACE", RequestNotSent(), None)) self.assertTrue(connection._shouldRetry( b"DELETE", RequestNotSent(), None)) self.assertFalse(connection._shouldRetry( b"POST", RequestNotSent(), None)) self.assertFalse(connection._shouldRetry( b"MYMETHOD", RequestNotSent(), None)) # This will be covered by a different ticket, since we need support #for resettable body producers: # self.assertTrue(connection._doRetry("PUT", RequestNotSent(), None))
Example #5
Source File: test_agent.py From learn_python3_spider with MIT License | 6 votes |
def test_onlyRetryIfNoResponseReceived(self): """ Only L{RequestNotSent}, L{RequestTransmissionFailed} and L{ResponseNeverReceived} exceptions cause a retry. """ pool = client.HTTPConnectionPool(None) connection = client._RetryingHTTP11ClientProtocol(None, pool) self.assertTrue(connection._shouldRetry( b"GET", RequestNotSent(), None)) self.assertTrue(connection._shouldRetry( b"GET", RequestTransmissionFailed([]), None)) self.assertTrue(connection._shouldRetry( b"GET", ResponseNeverReceived([]),None)) self.assertFalse(connection._shouldRetry( b"GET", ResponseFailed([]), None)) self.assertFalse(connection._shouldRetry( b"GET", ConnectionRefusedError(), None))
Example #6
Source File: test_agent.py From learn_python3_spider with MIT License | 6 votes |
def test_wrappedOnPersistentReturned(self): """ If L{client.HTTPConnectionPool.getConnection} returns a previously cached connection, it will get wrapped in a L{client._RetryingHTTP11ClientProtocol}. """ pool = client.HTTPConnectionPool(Clock()) # Add a connection to the cache: protocol = StubHTTPProtocol() protocol.makeConnection(StringTransport()) pool._putConnection(123, protocol) # Retrieve it, it should come back wrapped in a # _RetryingHTTP11ClientProtocol: d = pool.getConnection(123, DummyEndpoint()) def gotConnection(connection): self.assertIsInstance(connection, client._RetryingHTTP11ClientProtocol) self.assertIdentical(connection._clientProtocol, protocol) return d.addCallback(gotConnection)
Example #7
Source File: test_agent.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_dontRetryIfRetryAutomaticallyFalse(self): """ If L{HTTPConnectionPool.retryAutomatically} is set to C{False}, don't wrap connections with retrying logic. """ pool = client.HTTPConnectionPool(Clock()) pool.retryAutomatically = False # Add a connection to the cache: protocol = StubHTTPProtocol() protocol.makeConnection(StringTransport()) pool._putConnection(123, protocol) # Retrieve it, it should come back unwrapped: d = pool.getConnection(123, DummyEndpoint()) def gotConnection(connection): self.assertIdentical(connection, protocol) return d.addCallback(gotConnection)
Example #8
Source File: test_agent.py From learn_python3_spider with MIT License | 6 votes |
def test_dontRetryIfRetryAutomaticallyFalse(self): """ If L{HTTPConnectionPool.retryAutomatically} is set to C{False}, don't wrap connections with retrying logic. """ pool = client.HTTPConnectionPool(Clock()) pool.retryAutomatically = False # Add a connection to the cache: protocol = StubHTTPProtocol() protocol.makeConnection(StringTransport()) pool._putConnection(123, protocol) # Retrieve it, it should come back unwrapped: d = pool.getConnection(123, DummyEndpoint()) def gotConnection(connection): self.assertIdentical(connection, protocol) return d.addCallback(gotConnection)
Example #9
Source File: test_agent.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_onlyRetryIfNoResponseReceived(self): """ Only L{RequestNotSent}, L{RequestTransmissionFailed} and L{ResponseNeverReceived} exceptions cause a retry. """ pool = client.HTTPConnectionPool(None) connection = client._RetryingHTTP11ClientProtocol(None, pool) self.assertTrue(connection._shouldRetry( b"GET", RequestNotSent(), None)) self.assertTrue(connection._shouldRetry( b"GET", RequestTransmissionFailed([]), None)) self.assertTrue(connection._shouldRetry( b"GET", ResponseNeverReceived([]),None)) self.assertFalse(connection._shouldRetry( b"GET", ResponseFailed([]), None)) self.assertFalse(connection._shouldRetry( b"GET", ConnectionRefusedError(), None))
Example #10
Source File: test_agent.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_onlyRetryIdempotentMethods(self): """ Only GET, HEAD, OPTIONS, TRACE, DELETE methods cause a retry. """ pool = client.HTTPConnectionPool(None) connection = client._RetryingHTTP11ClientProtocol(None, pool) self.assertTrue(connection._shouldRetry( b"GET", RequestNotSent(), None)) self.assertTrue(connection._shouldRetry( b"HEAD", RequestNotSent(), None)) self.assertTrue(connection._shouldRetry( b"OPTIONS", RequestNotSent(), None)) self.assertTrue(connection._shouldRetry( b"TRACE", RequestNotSent(), None)) self.assertTrue(connection._shouldRetry( b"DELETE", RequestNotSent(), None)) self.assertFalse(connection._shouldRetry( b"POST", RequestNotSent(), None)) self.assertFalse(connection._shouldRetry( b"MYMETHOD", RequestNotSent(), None)) # This will be covered by a different ticket, since we need support #for resettable body producers: # self.assertTrue(connection._doRetry("PUT", RequestNotSent(), None))
Example #11
Source File: hlsproxy.py From hls-proxy with MIT License | 6 votes |
def __init__(self, reactor): self.reactor = reactor pool = HTTPConnectionPool(reactor, persistent=True) pool.maxPersistentPerHost = 1 pool.cachedConnectionTimeout = 600 self.agent = RedirectAgent(Agent(reactor, pool=pool)) self.reqQ = HttpReqQ(self.agent, self.reactor) self.clientPlaylist = HlsPlaylist() self.verbose = False self.download = False self.outDir = "" self.encryptionHandled=False # required for the dump durations functionality self.dur_dump_file = None self.dur_avproble_acc = 0 self.dur_vt_acc = 0 self.dur_playlist_acc = 0
Example #12
Source File: test_agent.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_nonPersistent(self): """ If C{persistent} is set to C{False} when creating the L{HTTPConnectionPool}, C{Request}s are created with their C{persistent} flag set to C{False}. Elsewhere in the tests for the underlying HTTP code we ensure that this will result in the disconnection of the HTTP protocol once the request is done, so that the connection will not be returned to the pool. """ pool = HTTPConnectionPool(self.reactor, persistent=False) agent = client.Agent(self.reactor, pool=pool) agent._getEndpoint = lambda *args: self agent.request(b"GET", b"http://127.0.0.1") self.assertEqual(self.protocol.requests[0][0].persistent, False)
Example #13
Source File: test_agent.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_cancelGetConnectionCancelsEndpointConnect(self): """ Cancelling the C{Deferred} returned from L{HTTPConnectionPool.getConnection} cancels the C{Deferred} returned by opening a new connection with the given endpoint. """ self.assertEqual(self.pool._connections, {}) connectionResult = Deferred() class Endpoint: def connect(self, factory): return connectionResult d = self.pool.getConnection(12345, Endpoint()) d.cancel() self.assertEqual(self.failureResultOf(connectionResult).type, CancelledError)
Example #14
Source File: test_client.py From learn_python3_spider with MIT License | 5 votes |
def test_repr(self): """connection L{repr()} includes endpoint's L{repr()}""" pool = client.HTTPConnectionPool(reactor=None) ep = DummyEndPoint("this_is_probably_unique") d = pool.getConnection('someplace', ep) result = self.successResultOf(d) representation = repr(result) self.assertIn(repr(ep), representation)
Example #15
Source File: test_agent.py From learn_python3_spider with MIT License | 5 votes |
def test_getUsesQuiescentCallback(self): """ When L{HTTPConnectionPool.getConnection} connects, it returns a C{Deferred} that fires with an instance of L{HTTP11ClientProtocol} that has the correct quiescent callback attached. When this callback is called the protocol is returned to the cache correctly, using the right key. """ class StringEndpoint(object): def connect(self, factory): p = factory.buildProtocol(None) p.makeConnection(StringTransport()) return succeed(p) pool = HTTPConnectionPool(self.fakeReactor, True) pool.retryAutomatically = False result = [] key = "a key" pool.getConnection( key, StringEndpoint()).addCallback( result.append) protocol = result[0] self.assertIsInstance(protocol, HTTP11ClientProtocol) # Now that we have protocol instance, lets try to put it back in the # pool: protocol._state = "QUIESCENT" protocol._quiescentCallback(protocol) # If we try to retrive a connection to same destination again, we # should get the same protocol, because it should've been added back # to the pool: result2 = [] pool.getConnection( key, StringEndpoint()).addCallback( result2.append) self.assertIdentical(result2[0], protocol)
Example #16
Source File: test_agent.py From learn_python3_spider with MIT License | 5 votes |
def test_onlyRetryWithoutBody(self): """ L{_RetryingHTTP11ClientProtocol} only retries queries that don't have a body. This is an implementation restriction; if the restriction is fixed, this test should be removed and PUT added to list of methods that support retries. """ pool = client.HTTPConnectionPool(None) connection = client._RetryingHTTP11ClientProtocol(None, pool) self.assertTrue(connection._shouldRetry(b"GET", RequestNotSent(), None)) self.assertFalse(connection._shouldRetry(b"GET", RequestNotSent(), object()))
Example #17
Source File: matrixfederationagent.py From sydent with Apache License 2.0 | 5 votes |
def __init__( self, reactor, tls_client_options_factory, _well_known_tls_policy=None, _srv_resolver=None, _well_known_cache=well_known_cache, ): self._reactor = reactor self._tls_client_options_factory = tls_client_options_factory if _srv_resolver is None: _srv_resolver = SrvResolver() self._srv_resolver = _srv_resolver self._pool = HTTPConnectionPool(reactor) self._pool.retryAutomatically = False self._pool.maxPersistentPerHost = 5 self._pool.cachedConnectionTimeout = 2 * 60 agent_args = {} if _well_known_tls_policy is not None: # the param is called 'contextFactory', but actually passing a # contextfactory is deprecated, and it expects an IPolicyForHTTPS. agent_args['contextFactory'] = _well_known_tls_policy _well_known_agent = RedirectAgent( Agent(self._reactor, pool=self._pool, **agent_args), ) self._well_known_agent = _well_known_agent # our cache of .well-known lookup results, mapping from server name # to delegated name. The values can be: # `bytes`: a valid server-name # `None`: there is no (valid) .well-known here self._well_known_cache = _well_known_cache
Example #18
Source File: test_agent.py From learn_python3_spider with MIT License | 5 votes |
def test_notWrappedOnNewReturned(self): """ If L{client.HTTPConnectionPool.getConnection} returns a new connection, it will be returned as is. """ pool = client.HTTPConnectionPool(None) d = pool.getConnection(123, DummyEndpoint()) def gotConnection(connection): # Don't want to use isinstance since potentially the wrapper might # subclass it at some point: self.assertIdentical(connection.__class__, HTTP11ClientProtocol) return d.addCallback(gotConnection)
Example #19
Source File: test_agent.py From learn_python3_spider with MIT License | 5 votes |
def test_retryIfFailedDueToNonCancelException(self): """ If a request failed with L{ResponseNeverReceived} due to some arbitrary exception, C{_shouldRetry} returns C{True} to indicate the request should be retried. """ pool = client.HTTPConnectionPool(None) connection = client._RetryingHTTP11ClientProtocol(None, pool) self.assertTrue(connection._shouldRetry( b"GET", ResponseNeverReceived([Failure(Exception())]), None))
Example #20
Source File: periodic.py From telepresence with Apache License 2.0 | 5 votes |
def __init__(self, reactor): self.reactor = reactor self.log = Logger("Poll") pool = HTTPConnectionPool(reactor) pool._factory = QuietHTTP11ClientFactory self.agent = Agent(reactor, connectTimeout=10.0, pool=pool)
Example #21
Source File: gcmpushkin.py From sygnal with Apache License 2.0 | 5 votes |
def __init__(self, name, sygnal, config, canonical_reg_id_store): super(GcmPushkin, self).__init__(name, sygnal, config) nonunderstood = set(self.cfg.keys()).difference(self.UNDERSTOOD_CONFIG_FIELDS) if len(nonunderstood) > 0: logger.warning( "The following configuration fields are not understood: %s", nonunderstood, ) self.http_pool = HTTPConnectionPool(reactor=sygnal.reactor) self.max_connections = self.get_config( "max_connections", DEFAULT_MAX_CONNECTIONS ) self.connection_semaphore = DeferredSemaphore(self.max_connections) self.http_pool.maxPersistentPerHost = self.max_connections tls_client_options_factory = ClientTLSOptionsFactory() self.http_agent = Agent( reactor=sygnal.reactor, pool=self.http_pool, contextFactory=tls_client_options_factory, ) self.db = sygnal.database self.canonical_reg_id_store = canonical_reg_id_store self.api_key = self.get_config("api_key") if not self.api_key: raise PushkinSetupException("No API key set in config")
Example #22
Source File: test_agent.py From learn_python3_spider with MIT License | 5 votes |
def test_endpointFactoryDefaultPool(self): """ If no pool is passed in to L{Agent.usingEndpointFactory}, a default pool is constructed with no persistent connections. """ agent = client.Agent.usingEndpointFactory( self.reactor, StubEndpointFactory()) pool = agent._pool self.assertEqual((pool.__class__, pool.persistent, pool._reactor), (HTTPConnectionPool, False, agent._reactor))
Example #23
Source File: gcmpushkin.py From sygnal with Apache License 2.0 | 5 votes |
def _perform_http_request(self, body, headers): """ Perform an HTTP request to the FCM server with the body and headers specified. Args: body (nested dict): Body. Will be JSON-encoded. headers (Headers): HTTP Headers. Returns: """ body_producer = FileBodyProducer(BytesIO(json.dumps(body).encode())) # we use the semaphore to actually limit the number of concurrent # requests, since the HTTPConnectionPool will actually just lead to more # requests being created but not pooled – it does not perform limiting. with QUEUE_TIME_HISTOGRAM.time(): with PENDING_REQUESTS_GAUGE.track_inprogress(): await self.connection_semaphore.acquire() try: with SEND_TIME_HISTOGRAM.time(): with ACTIVE_REQUESTS_GAUGE.track_inprogress(): response = await self.http_agent.request( b"POST", GCM_URL, headers=Headers(headers), bodyProducer=body_producer, ) response_text = (await readBody(response)).decode() except Exception as exception: raise TemporaryNotificationDispatchException( "GCM request failure" ) from exception finally: self.connection_semaphore.release() return response, response_text
Example #24
Source File: pubnub_twisted.py From jarvis with GNU General Public License v2.0 | 5 votes |
def __init__(self, config, pool=None, reactor=None, clock=None): super(PubNubTwisted, self).__init__(config) self.clock = clock self._publish_sequence_manager = PublishSequenceManager(PubNubCore.MAX_SEQUENCE) if self.config.enable_subscribe: self._subscription_manager = TwistedSubscriptionManager(self) self.disconnected_times = 0 if reactor is None: self.reactor = _reactor else: self.reactor = reactor if pool is None: self.pnconn_pool = HTTPConnectionPool(self.reactor, persistent=True) self.pnconn_pool.maxPersistentPerHost = 3 self.pnconn_pool.cachedConnectionTimeout = self.config.subscribe_request_timeout self.pnconn_pool.retryAutomatically = False else: self.pnconn_pool = pool self.headers = { 'User-Agent': [self.sdk_name], }
Example #25
Source File: test_agent.py From learn_python3_spider with MIT License | 5 votes |
def test_persistent(self): """ If C{persistent} is set to C{True} on the L{HTTPConnectionPool} (the default), C{Request}s are created with their C{persistent} flag set to C{True}. """ pool = HTTPConnectionPool(self.reactor) agent = client.Agent(self.reactor, pool=pool) agent._getEndpoint = lambda *args: self agent.request(b"GET", b"http://127.0.0.1") self.assertEqual(self.protocol.requests[0][0].persistent, True)
Example #26
Source File: test_agent.py From learn_python3_spider with MIT License | 5 votes |
def test_closeCachedConnections(self): """ L{HTTPConnectionPool.closeCachedConnections} closes all cached connections and removes them from the cache. It returns a Deferred that fires when they have all lost their connections. """ persistent = [] def addProtocol(scheme, host, port): p = HTTP11ClientProtocol() p.makeConnection(StringTransport()) self.pool._putConnection((scheme, host, port), p) persistent.append(p) addProtocol("http", b"example.com", 80) addProtocol("http", b"www2.example.com", 80) doneDeferred = self.pool.closeCachedConnections() # Connections have begun disconnecting: for p in persistent: self.assertEqual(p.transport.disconnecting, True) self.assertEqual(self.pool._connections, {}) # All timeouts were cancelled and removed: for dc in self.fakeReactor.getDelayedCalls(): self.assertEqual(dc.cancelled, True) self.assertEqual(self.pool._timeouts, {}) # Returned Deferred fires when all connections have been closed: result = [] doneDeferred.addCallback(result.append) self.assertEqual(result, []) persistent[0].connectionLost(Failure(ConnectionDone())) self.assertEqual(result, []) persistent[1].connectionLost(Failure(ConnectionDone())) self.assertEqual(result, [None])
Example #27
Source File: twisted.py From python-consul2 with MIT License | 5 votes |
def __init__(self, contextFactory, *args, **kwargs): super(HTTPClient, self).__init__(*args, **kwargs) agent_kwargs = dict( reactor=reactor, pool=HTTPConnectionPool(reactor)) if contextFactory is not None: # use the provided context factory agent_kwargs['contextFactory'] = contextFactory elif not self.verify: # if no context is provided and verify is set to false, use the # insecure context factory implementation agent_kwargs['contextFactory'] = InsecureContextFactory() self.client = TreqHTTPClient(Agent(**agent_kwargs))
Example #28
Source File: test_agent.py From learn_python3_spider with MIT License | 5 votes |
def test_getReturnsNewIfCacheEmpty(self): """ If there are no cached connections, L{HTTPConnectionPool.getConnection} returns a new connection. """ self.assertEqual(self.pool._connections, {}) def gotConnection(conn): self.assertIsInstance(conn, StubHTTPProtocol) # The new connection is not stored in the pool: self.assertNotIn(conn, self.pool._connections.values()) unknownKey = 12245 d = self.pool.getConnection(unknownKey, DummyEndpoint()) return d.addCallback(gotConnection)
Example #29
Source File: test_agent.py From learn_python3_spider with MIT License | 5 votes |
def setUp(self): self.fakeReactor = self.createReactor() self.pool = HTTPConnectionPool(self.fakeReactor) self.pool._factory = DummyFactory # The retry code path is tested in HTTPConnectionPoolRetryTests: self.pool.retryAutomatically = False
Example #30
Source File: client.py From txacme with MIT License | 5 votes |
def _default_client(jws_client, reactor, key, alg): """ Make a client if we didn't get one. """ if jws_client is None: pool = HTTPConnectionPool(reactor) agent = Agent(reactor, pool=pool) jws_client = JWSClient(HTTPClient(agent=agent), key, alg) return jws_client