making connection consistency more configurable
This commit is contained in:
		@@ -27,7 +27,7 @@ _max_connections = 10
 | 
			
		||||
# global connection pool
 | 
			
		||||
connection_pool = None
 | 
			
		||||
 | 
			
		||||
def setup(hosts, username=None, password=None, max_connections=10, default_keyspace=None):
 | 
			
		||||
def setup(hosts, username=None, password=None, max_connections=10, default_keyspace=None, consistency='ONE'):
 | 
			
		||||
    """
 | 
			
		||||
    Records the hosts and connects to one of them
 | 
			
		||||
 | 
			
		||||
@@ -55,16 +55,17 @@ def setup(hosts, username=None, password=None, max_connections=10, default_keysp
 | 
			
		||||
    if not _hosts:
 | 
			
		||||
        raise CQLConnectionError("At least one host required")
 | 
			
		||||
 | 
			
		||||
    connection_pool = ConnectionPool(_hosts, username, password)
 | 
			
		||||
    connection_pool = ConnectionPool(_hosts, username, password, consistency)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ConnectionPool(object):
 | 
			
		||||
    """Handles pooling of database connections."""
 | 
			
		||||
 | 
			
		||||
    def __init__(self, hosts, username=None, password=None):
 | 
			
		||||
    def __init__(self, hosts, username=None, password=None, consistency=None):
 | 
			
		||||
        self._hosts = hosts
 | 
			
		||||
        self._username = username
 | 
			
		||||
        self._password = password
 | 
			
		||||
        self._consistency = consistency
 | 
			
		||||
 | 
			
		||||
        self._queue = Queue.Queue(maxsize=_max_connections)
 | 
			
		||||
 | 
			
		||||
@@ -120,7 +121,13 @@ class ConnectionPool(object):
 | 
			
		||||
 | 
			
		||||
        for host in hosts:
 | 
			
		||||
            try:
 | 
			
		||||
                new_conn = cql.connect(host.name, host.port, user=self._username, password=self._password)
 | 
			
		||||
                new_conn = cql.connect(
 | 
			
		||||
                    host.name,
 | 
			
		||||
                    host.port,
 | 
			
		||||
                    user=self._username,
 | 
			
		||||
                    password=self._password,
 | 
			
		||||
                    consistency_level=self._consistency
 | 
			
		||||
                )
 | 
			
		||||
                new_conn.set_cql_version('3.0.0')
 | 
			
		||||
                return new_conn
 | 
			
		||||
            except Exception as e:
 | 
			
		||||
 
 | 
			
		||||
@@ -7,11 +7,20 @@ Connection
 | 
			
		||||
The setup function in `cqlengine.connection` records the Cassandra servers to connect to.
 | 
			
		||||
If there is a problem with one of the servers, cqlengine will try to connect to each of the other connections before failing.
 | 
			
		||||
 | 
			
		||||
.. function:: setup(hosts [, username=None, password=None])
 | 
			
		||||
.. function:: setup(hosts [, username=None, password=None, consistency='ONE'])
 | 
			
		||||
 | 
			
		||||
    :param hosts: list of hosts, strings in the <hostname>:<port>, or just <hostname>
 | 
			
		||||
    :type hosts: list
 | 
			
		||||
 | 
			
		||||
    :param username: a username, if required
 | 
			
		||||
    :type username: str
 | 
			
		||||
 | 
			
		||||
    :param password: a password, if required
 | 
			
		||||
    :type password: str
 | 
			
		||||
 | 
			
		||||
    :param consistency: the consistency level of the connection, defaults to 'ONE'
 | 
			
		||||
    :type consistency: str
 | 
			
		||||
 | 
			
		||||
    Records the hosts and connects to one of them
 | 
			
		||||
 | 
			
		||||
See the example at :ref:`getting-started`
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user