def __init__(self, seed_list, keyspace=None, creds=None, thrift_port=None,
                 pool_size=None, conn_timeout=10, bind_address=None,
                 log_cb=log.msg, reactor=None, ssl_ctx_factory=None,
                 sasl_cred_factory=None, auto_node_discovery=True, fill_pool_throttle=0.5):

        self.describing_ring = False
        self.seed_list = list(seed_list)
        if thrift_port is None:
            thrift_port = self.default_cassandra_thrift_port
        self.thrift_port = thrift_port
        if pool_size is None:
            pool_size = len(self.seed_list)
        self.target_pool_size = pool_size
        self.log = log_cb
        self.conn_timeout = conn_timeout
        self.bind_address = bind_address
        self.keyspace = keyspace
        self.creds = creds
        self.ssl_ctx_factory = ssl_ctx_factory
        self.sasl_cred_factory = sasl_cred_factory
        self.request_queue = defer.DeferredQueue()
        self.future_fill_pool = None
        self.removed_nodes = set()
        self._client_instance = CassandraClient(self)
        self.auto_node_discovery = auto_node_discovery
        self.fill_pool_throttle = fill_pool_throttle
        self.throttle_timer = None
        self.fill_pool_last_called = None

        if reactor is None:
            from twisted.internet import reactor
        self.reactor = reactor

        self.retryables.extend((ttypes.TimedOutException,
                                ttypes.UnavailableException))

        # A set of CassandraNode instances representing known nodes. This
        # includes nodes from the initial seed list, nodes seen in
        # describe_ring calls to existing nodes, and nodes explicitly added
        # by the addNode() method. Nodes are only removed from this set if
        # no connections have been successful in self.forget_node_interval
        # seconds, or by an explicit call to removeNode().
        self.nodes = set()

        # A set of CassandraPoolReconnectorFactory instances corresponding to
        # connections which are either live or pending. Failed attempts to
        # connect will remove a connector from this set. When connections are
        # lost, an immediate reconnect will be attempted.
        self.connectors = set()

        # A collection of objects from self.connectors corresponding to
        # existing, working (as far as we know) connections. This will be
        # derivable from self.connectors, but hopefully will be maintained to
        # present a good snapshot of what is alive, now, and what is not.
        # This is stored in a deque so that it can be efficiently rotated
        # to distribute requests.
        self.good_conns = set()

        # A set of CassandraPoolReconnectorFactory instances, formerly in
        # self.connectors, the connections for which are draining. No new
        # requests should be fed to these instances; they are tracked only so
        # that they can be terminated more fully in case this service is shut
        # down before they finish.
        self.dying_conns = set()
Initialize a CassandraClusterPool.
dataset/ETHPy150Open driftx/Telephus/telephus/pool.py/CassandraClusterPool.__init__