Update docs for 2.1.0b1
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>cassandra — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>cassandra — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="../index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="../index.html" />
|
||||
<link rel="up" title="Module code" href="index.html" />
|
||||
</head>
|
||||
<body>
|
||||
@@ -36,7 +36,7 @@
|
||||
<li class="right" >
|
||||
<a href="../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -89,7 +89,7 @@
|
||||
<span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="s">'cassandra'</span><span class="p">)</span><span class="o">.</span><span class="n">addHandler</span><span class="p">(</span><span class="n">NullHandler</span><span class="p">())</span>
|
||||
|
||||
|
||||
<span class="n">__version_info__</span> <span class="o">=</span> <span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
|
||||
<span class="n">__version_info__</span> <span class="o">=</span> <span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="s">'0b1'</span><span class="p">)</span>
|
||||
<span class="n">__version__</span> <span class="o">=</span> <span class="s">'.'</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">map</span><span class="p">(</span><span class="nb">str</span><span class="p">,</span> <span class="n">__version_info__</span><span class="p">))</span>
|
||||
|
||||
|
||||
@@ -374,7 +374,7 @@
|
||||
<li class="right" >
|
||||
<a href="../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="index.html" >Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>cassandra.auth — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>cassandra.auth — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../../_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="../../index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="../../index.html" />
|
||||
<link rel="up" title="cassandra" href="../cassandra.html" />
|
||||
</head>
|
||||
<body>
|
||||
@@ -36,7 +36,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" >Module code</a> »</li>
|
||||
<li><a href="../cassandra.html" accesskey="U">cassandra</a> »</li>
|
||||
</ul>
|
||||
@@ -206,7 +206,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" >Module code</a> »</li>
|
||||
<li><a href="../cassandra.html" >cassandra</a> »</li>
|
||||
</ul>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>cassandra.cluster — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>cassandra.cluster — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../../_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="../../index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="../../index.html" />
|
||||
<link rel="up" title="cassandra" href="../cassandra.html" />
|
||||
</head>
|
||||
<body>
|
||||
@@ -36,7 +36,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" >Module code</a> »</li>
|
||||
<li><a href="../cassandra.html" accesskey="U">cassandra</a> »</li>
|
||||
</ul>
|
||||
@@ -111,6 +111,7 @@
|
||||
<span class="kn">from</span> <span class="nn">cassandra</span> <span class="kn">import</span> <span class="p">(</span><span class="n">ConsistencyLevel</span><span class="p">,</span> <span class="n">AuthenticationFailed</span><span class="p">,</span>
|
||||
<span class="n">OperationTimedOut</span><span class="p">,</span> <span class="n">UnsupportedOperation</span><span class="p">)</span>
|
||||
<span class="kn">from</span> <span class="nn">cassandra.connection</span> <span class="kn">import</span> <span class="n">ConnectionException</span><span class="p">,</span> <span class="n">ConnectionShutdown</span>
|
||||
<span class="kn">from</span> <span class="nn">cassandra.encoder</span> <span class="kn">import</span> <span class="n">cql_encode_all_types</span><span class="p">,</span> <span class="n">cql_encoders</span>
|
||||
<span class="kn">from</span> <span class="nn">cassandra.protocol</span> <span class="kn">import</span> <span class="p">(</span><span class="n">QueryMessage</span><span class="p">,</span> <span class="n">ResultMessage</span><span class="p">,</span>
|
||||
<span class="n">ErrorMessage</span><span class="p">,</span> <span class="n">ReadTimeoutErrorMessage</span><span class="p">,</span>
|
||||
<span class="n">WriteTimeoutErrorMessage</span><span class="p">,</span>
|
||||
@@ -127,13 +128,14 @@
|
||||
<span class="n">ExponentialReconnectionPolicy</span><span class="p">,</span> <span class="n">HostDistance</span><span class="p">,</span>
|
||||
<span class="n">RetryPolicy</span><span class="p">)</span>
|
||||
<span class="kn">from</span> <span class="nn">cassandra.pool</span> <span class="kn">import</span> <span class="p">(</span><span class="n">_ReconnectionHandler</span><span class="p">,</span> <span class="n">_HostReconnectionHandler</span><span class="p">,</span>
|
||||
<span class="n">HostConnectionPool</span><span class="p">,</span> <span class="n">NoConnectionsAvailable</span><span class="p">)</span>
|
||||
<span class="n">HostConnectionPool</span><span class="p">,</span> <span class="n">HostConnection</span><span class="p">,</span>
|
||||
<span class="n">NoConnectionsAvailable</span><span class="p">)</span>
|
||||
<span class="kn">from</span> <span class="nn">cassandra.query</span> <span class="kn">import</span> <span class="p">(</span><span class="n">SimpleStatement</span><span class="p">,</span> <span class="n">PreparedStatement</span><span class="p">,</span> <span class="n">BoundStatement</span><span class="p">,</span>
|
||||
<span class="n">BatchStatement</span><span class="p">,</span> <span class="n">bind_params</span><span class="p">,</span> <span class="n">QueryTrace</span><span class="p">,</span> <span class="n">Statement</span><span class="p">,</span>
|
||||
<span class="n">named_tuple_factory</span><span class="p">,</span> <span class="n">dict_factory</span><span class="p">)</span>
|
||||
|
||||
<span class="c"># default to gevent when we are monkey patched, otherwise if libev is available, use that as the</span>
|
||||
<span class="c"># default because it's faster than asyncore</span>
|
||||
<span class="c"># default because it's fastest. Otherwise, use asyncore.</span>
|
||||
<span class="k">if</span> <span class="s">'gevent.monkey'</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">cassandra.io.geventreactor</span> <span class="kn">import</span> <span class="n">GeventConnection</span> <span class="k">as</span> <span class="n">DefaultConnection</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
@@ -326,6 +328,15 @@
|
||||
<span class="sd"> A factory function which creates instances of</span>
|
||||
<span class="sd"> :class:`.policies.ConvictionPolicy`. Defaults to</span>
|
||||
<span class="sd"> :class:`.policies.SimpleConvictionPolicy`.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">connect_to_remote_hosts</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> If left as :const:`True`, hosts that are considered :attr:`~.HostDistance.REMOTE`</span>
|
||||
<span class="sd"> by the :attr:`~.Cluster.load_balancing_policy` will have a connection</span>
|
||||
<span class="sd"> opened to them. Otherwise, they will not have a connection opened to them.</span>
|
||||
|
||||
<span class="sd"> .. versionadded:: 2.1.0</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">metrics_enabled</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
@@ -376,6 +387,8 @@
|
||||
|
||||
<span class="sd"> * :class:`cassandra.io.asyncorereactor.AsyncoreConnection`</span>
|
||||
<span class="sd"> * :class:`cassandra.io.libevreactor.LibevConnection`</span>
|
||||
<span class="sd"> * :class:`cassandra.io.libevreactor.GeventConnection` (requires monkey-patching)</span>
|
||||
<span class="sd"> * :class:`cassandra.io.libevreactor.TwistedConnection`</span>
|
||||
|
||||
<span class="sd"> By default, ``AsyncoreConnection`` will be used, which uses</span>
|
||||
<span class="sd"> the ``asyncore`` module in the Python standard library. The</span>
|
||||
@@ -383,6 +396,9 @@
|
||||
<span class="sd"> supported on a wider range of systems.</span>
|
||||
|
||||
<span class="sd"> If ``libev`` is installed, ``LibevConnection`` will be used instead.</span>
|
||||
|
||||
<span class="sd"> If gevent monkey-patching of the standard library is detected,</span>
|
||||
<span class="sd"> GeventConnection will be used automatically.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">control_connection_timeout</span> <span class="o">=</span> <span class="mf">2.0</span>
|
||||
@@ -399,7 +415,12 @@
|
||||
<span class="n">is_shutdown</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="n">_is_setup</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="n">_prepared_statements</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="n">_prepared_statement_lock</span> <span class="o">=</span> <span class="n">Lock</span><span class="p">()</span>
|
||||
<span class="n">_prepared_statement_lock</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
|
||||
<span class="n">_user_types</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> A map of {keyspace: {type_name: UserType}}</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">_listeners</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="n">_listener_lock</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
@@ -471,12 +492,14 @@
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_listener_lock</span> <span class="o">=</span> <span class="n">Lock</span><span class="p">()</span>
|
||||
|
||||
<span class="c"># let Session objects be GC'ed (and shutdown) when the user no longer</span>
|
||||
<span class="c"># holds a reference. Normally the cycle detector would handle this,</span>
|
||||
<span class="c"># but implementing __del__ prevents that.</span>
|
||||
<span class="c"># holds a reference.</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">sessions</span> <span class="o">=</span> <span class="n">WeakSet</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">metadata</span> <span class="o">=</span> <span class="n">Metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">control_connection</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_prepared_statements</span> <span class="o">=</span> <span class="n">WeakValueDictionary</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_prepared_statement_lock</span> <span class="o">=</span> <span class="n">Lock</span><span class="p">()</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_user_types</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">dict</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_min_requests_per_connection</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="n">HostDistance</span><span class="o">.</span><span class="n">LOCAL</span><span class="p">:</span> <span class="n">DEFAULT_MIN_REQUESTS</span><span class="p">,</span>
|
||||
@@ -510,16 +533,29 @@
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">control_connection</span> <span class="o">=</span> <span class="n">ControlConnection</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">control_connection_timeout</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">register_user_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">user_type</span><span class="p">,</span> <span class="n">klass</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_user_types</span><span class="p">[</span><span class="n">keyspace</span><span class="p">][</span><span class="n">user_type</span><span class="p">]</span> <span class="o">=</span> <span class="n">klass</span>
|
||||
<span class="k">for</span> <span class="n">session</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">sessions</span><span class="p">:</span>
|
||||
<span class="n">session</span><span class="o">.</span><span class="n">user_type_registered</span><span class="p">(</span><span class="n">keyspace</span><span class="p">,</span> <span class="n">user_type</span><span class="p">,</span> <span class="n">klass</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_min_requests_per_connection</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host_distance</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_min_requests_per_connection</span><span class="p">[</span><span class="n">host_distance</span><span class="p">]</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">set_min_requests_per_connection</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host_distance</span><span class="p">,</span> <span class="n">min_requests</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">protocol_version</span> <span class="o">>=</span> <span class="mi">3</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">UnsupportedOperation</span><span class="p">(</span>
|
||||
<span class="s">"Cluster.set_min_requests_per_connection() only has an effect "</span>
|
||||
<span class="s">"when using protocol_version 1 or 2."</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_min_requests_per_connection</span><span class="p">[</span><span class="n">host_distance</span><span class="p">]</span> <span class="o">=</span> <span class="n">min_requests</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_max_requests_per_connection</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host_distance</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_max_requests_per_connection</span><span class="p">[</span><span class="n">host_distance</span><span class="p">]</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">set_max_requests_per_connection</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host_distance</span><span class="p">,</span> <span class="n">max_requests</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">protocol_version</span> <span class="o">>=</span> <span class="mi">3</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">UnsupportedOperation</span><span class="p">(</span>
|
||||
<span class="s">"Cluster.set_max_requests_per_connection() only has an effect "</span>
|
||||
<span class="s">"when using protocol_version 1 or 2."</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_max_requests_per_connection</span><span class="p">[</span><span class="n">host_distance</span><span class="p">]</span> <span class="o">=</span> <span class="n">max_requests</span>
|
||||
|
||||
<div class="viewcode-block" id="Cluster.get_core_connections_per_host"><a class="viewcode-back" href="../../api/cassandra/cluster.html#cassandra.cluster.Cluster.get_core_connections_per_host">[docs]</a> <span class="k">def</span> <span class="nf">get_core_connections_per_host</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host_distance</span><span class="p">):</span>
|
||||
@@ -528,6 +564,9 @@
|
||||
<span class="sd"> for each host with :class:`~.HostDistance` equal to `host_distance`.</span>
|
||||
<span class="sd"> The default is 2 for :attr:`~HostDistance.LOCAL` and 1 for</span>
|
||||
<span class="sd"> :attr:`~HostDistance.REMOTE`.</span>
|
||||
|
||||
<span class="sd"> This property is ignored if :attr:`~.Cluster.protocol_version` is</span>
|
||||
<span class="sd"> 3 or higher.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_core_connections_per_host</span><span class="p">[</span><span class="n">host_distance</span><span class="p">]</span>
|
||||
</div>
|
||||
@@ -537,7 +576,16 @@
|
||||
<span class="sd"> for each host with :class:`~.HostDistance` equal to `host_distance`.</span>
|
||||
<span class="sd"> The default is 2 for :attr:`~HostDistance.LOCAL` and 1 for</span>
|
||||
<span class="sd"> :attr:`~HostDistance.REMOTE`.</span>
|
||||
|
||||
<span class="sd"> If :attr:`~.Cluster.protocol_version` is set to 3 or higher, this</span>
|
||||
<span class="sd"> is not supported (there is always one connection per host, unless</span>
|
||||
<span class="sd"> the host is remote and :attr:`connect_to_remote_hosts` is :const:`False`)</span>
|
||||
<span class="sd"> and using this will result in an :exc:`~.UnsupporteOperation`.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">protocol_version</span> <span class="o">>=</span> <span class="mi">3</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">UnsupportedOperation</span><span class="p">(</span>
|
||||
<span class="s">"Cluster.set_core_connections_per_host() only has an effect "</span>
|
||||
<span class="s">"when using protocol_version 1 or 2."</span><span class="p">)</span>
|
||||
<span class="n">old</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_core_connections_per_host</span><span class="p">[</span><span class="n">host_distance</span><span class="p">]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_core_connections_per_host</span><span class="p">[</span><span class="n">host_distance</span><span class="p">]</span> <span class="o">=</span> <span class="n">core_connections</span>
|
||||
<span class="k">if</span> <span class="n">old</span> <span class="o"><</span> <span class="n">core_connections</span><span class="p">:</span>
|
||||
@@ -549,6 +597,9 @@
|
||||
<span class="sd"> for each host with :class:`~.HostDistance` equal to `host_distance`.</span>
|
||||
<span class="sd"> The default is 8 for :attr:`~HostDistance.LOCAL` and 2 for</span>
|
||||
<span class="sd"> :attr:`~HostDistance.REMOTE`.</span>
|
||||
|
||||
<span class="sd"> This property is ignored if :attr:`~.Cluster.protocol_version` is</span>
|
||||
<span class="sd"> 3 or higher.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_max_connections_per_host</span><span class="p">[</span><span class="n">host_distance</span><span class="p">]</span>
|
||||
</div>
|
||||
@@ -558,7 +609,16 @@
|
||||
<span class="sd"> for each host with :class:`~.HostDistance` equal to `host_distance`.</span>
|
||||
<span class="sd"> The default is 2 for :attr:`~HostDistance.LOCAL` and 1 for</span>
|
||||
<span class="sd"> :attr:`~HostDistance.REMOTE`.</span>
|
||||
|
||||
<span class="sd"> If :attr:`~.Cluster.protocol_version` is set to 3 or higher, this</span>
|
||||
<span class="sd"> is not supported (there is always one connection per host, unless</span>
|
||||
<span class="sd"> the host is remote and :attr:`connect_to_remote_hosts` is :const:`False`)</span>
|
||||
<span class="sd"> and using this will result in an :exc:`~.UnsupporteOperation`.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">protocol_version</span> <span class="o">>=</span> <span class="mi">3</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">UnsupportedOperation</span><span class="p">(</span>
|
||||
<span class="s">"Cluster.set_max_connections_per_host() only has an effect "</span>
|
||||
<span class="s">"when using protocol_version 1 or 2."</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_max_connections_per_host</span><span class="p">[</span><span class="n">host_distance</span><span class="p">]</span> <span class="o">=</span> <span class="n">max_connections</span>
|
||||
</div>
|
||||
<span class="k">def</span> <span class="nf">connection_factory</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">address</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
@@ -583,6 +643,7 @@
|
||||
<span class="n">kwargs_dict</span><span class="p">[</span><span class="s">'ssl_options'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ssl_options</span>
|
||||
<span class="n">kwargs_dict</span><span class="p">[</span><span class="s">'cql_version'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">cql_version</span>
|
||||
<span class="n">kwargs_dict</span><span class="p">[</span><span class="s">'protocol_version'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">protocol_version</span>
|
||||
<span class="n">kwargs_dict</span><span class="p">[</span><span class="s">'user_type_map'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_user_types</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">kwargs_dict</span>
|
||||
|
||||
@@ -657,6 +718,9 @@
|
||||
</div>
|
||||
<span class="k">def</span> <span class="nf">_new_session</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">session</span> <span class="o">=</span> <span class="n">Session</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="o">.</span><span class="n">all_hosts</span><span class="p">())</span>
|
||||
<span class="k">for</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">type_map</span> <span class="ow">in</span> <span class="n">six</span><span class="o">.</span><span class="n">iteritems</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_user_types</span><span class="p">):</span>
|
||||
<span class="k">for</span> <span class="n">udt_name</span><span class="p">,</span> <span class="n">klass</span> <span class="ow">in</span> <span class="n">six</span><span class="o">.</span><span class="n">iteritems</span><span class="p">(</span><span class="n">type_map</span><span class="p">):</span>
|
||||
<span class="n">session</span><span class="o">.</span><span class="n">user_type_registered</span><span class="p">(</span><span class="n">keyspace</span><span class="p">,</span> <span class="n">udt_name</span><span class="p">,</span> <span class="n">klass</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">sessions</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">session</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">session</span>
|
||||
|
||||
@@ -775,6 +839,9 @@
|
||||
<span class="k">return</span> <span class="n">futures</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_start_reconnector</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">is_host_addition</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">load_balancing_policy</span><span class="o">.</span><span class="n">distance</span><span class="p">(</span><span class="n">host</span><span class="p">)</span> <span class="o">==</span> <span class="n">HostDistance</span><span class="o">.</span><span class="n">IGNORED</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="n">schedule</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">reconnection_policy</span><span class="o">.</span><span class="n">new_schedule</span><span class="p">()</span>
|
||||
|
||||
<span class="c"># in order to not hold references to this Cluster open and prevent</span>
|
||||
@@ -1094,13 +1161,25 @@
|
||||
|
||||
<span class="n">default_fetch_size</span> <span class="o">=</span> <span class="mi">5000</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> By default, this many rows will be fetched at a time. This can be</span>
|
||||
<span class="sd"> specified per-query through :attr:`.Statement.fetch_size`.</span>
|
||||
<span class="sd"> By default, this many rows will be fetched at a time. Setting</span>
|
||||
<span class="sd"> this to :const:`None` will disable automatic paging for large query</span>
|
||||
<span class="sd"> results. The fetch size can be also specified per-query through</span>
|
||||
<span class="sd"> :attr:`.Statement.fetch_size`.</span>
|
||||
|
||||
<span class="sd"> This only takes effect when protocol version 2 or higher is used.</span>
|
||||
<span class="sd"> See :attr:`.Cluster.protocol_version` for details.</span>
|
||||
|
||||
<span class="sd"> .. versionadded:: 2.0.0</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">use_client_timestamp</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> When using protocol version 3 or higher, write timestamps may be supplied</span>
|
||||
<span class="sd"> client-side at the protocol level. (Normally they are generated</span>
|
||||
<span class="sd"> server-side by the coordinator node.) Note that timestamps specified</span>
|
||||
<span class="sd"> within a CQL query will override this timestamp.</span>
|
||||
|
||||
<span class="sd"> .. versionadded:: 2.1.0</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">_lock</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
@@ -1109,6 +1188,8 @@
|
||||
<span class="n">_metrics</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="n">_protocol_version</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
|
||||
<span class="n">encoders</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cluster</span><span class="p">,</span> <span class="n">hosts</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">cluster</span> <span class="o">=</span> <span class="n">cluster</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">hosts</span> <span class="o">=</span> <span class="n">hosts</span>
|
||||
@@ -1119,6 +1200,8 @@
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_metrics</span> <span class="o">=</span> <span class="n">cluster</span><span class="o">.</span><span class="n">metrics</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_protocol_version</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">cluster</span><span class="o">.</span><span class="n">protocol_version</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">encoders</span> <span class="o">=</span> <span class="n">cql_encoders</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
||||
|
||||
<span class="c"># create connection pools in parallel</span>
|
||||
<span class="n">futures</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">host</span> <span class="ow">in</span> <span class="n">hosts</span><span class="p">:</span>
|
||||
@@ -1233,17 +1316,25 @@
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">fetch_size</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_protocol_version</span> <span class="o">>=</span> <span class="mi">2</span><span class="p">:</span>
|
||||
<span class="n">fetch_size</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">default_fetch_size</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_protocol_version</span> <span class="o">>=</span> <span class="mi">3</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">use_client_timestamp</span><span class="p">:</span>
|
||||
<span class="n">timestamp</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> <span class="o">*</span> <span class="mf">1e6</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">timestamp</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> <span class="n">SimpleStatement</span><span class="p">):</span>
|
||||
<span class="n">query_string</span> <span class="o">=</span> <span class="n">query</span><span class="o">.</span><span class="n">query_string</span>
|
||||
<span class="k">if</span> <span class="n">six</span><span class="o">.</span><span class="n">PY2</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">query_string</span><span class="p">,</span> <span class="n">six</span><span class="o">.</span><span class="n">text_type</span><span class="p">):</span>
|
||||
<span class="n">query_string</span> <span class="o">=</span> <span class="n">query_string</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s">'utf-8'</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">parameters</span><span class="p">:</span>
|
||||
<span class="n">query_string</span> <span class="o">=</span> <span class="n">bind_params</span><span class="p">(</span><span class="n">query</span><span class="o">.</span><span class="n">query_string</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span>
|
||||
<span class="n">query_string</span> <span class="o">=</span> <span class="n">bind_params</span><span class="p">(</span><span class="n">query_string</span><span class="p">,</span> <span class="n">parameters</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">encoders</span><span class="p">)</span>
|
||||
<span class="n">message</span> <span class="o">=</span> <span class="n">QueryMessage</span><span class="p">(</span>
|
||||
<span class="n">query_string</span><span class="p">,</span> <span class="n">cl</span><span class="p">,</span> <span class="n">query</span><span class="o">.</span><span class="n">serial_consistency_level</span><span class="p">,</span>
|
||||
<span class="n">fetch_size</span><span class="o">=</span><span class="n">fetch_size</span><span class="p">)</span>
|
||||
<span class="n">fetch_size</span><span class="p">,</span> <span class="n">timestamp</span><span class="o">=</span><span class="n">timestamp</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> <span class="n">BoundStatement</span><span class="p">):</span>
|
||||
<span class="n">message</span> <span class="o">=</span> <span class="n">ExecuteMessage</span><span class="p">(</span>
|
||||
<span class="n">query</span><span class="o">.</span><span class="n">prepared_statement</span><span class="o">.</span><span class="n">query_id</span><span class="p">,</span> <span class="n">query</span><span class="o">.</span><span class="n">values</span><span class="p">,</span> <span class="n">cl</span><span class="p">,</span>
|
||||
<span class="n">query</span><span class="o">.</span><span class="n">serial_consistency_level</span><span class="p">,</span> <span class="n">fetch_size</span><span class="o">=</span><span class="n">fetch_size</span><span class="p">)</span>
|
||||
<span class="n">query</span><span class="o">.</span><span class="n">serial_consistency_level</span><span class="p">,</span> <span class="n">fetch_size</span><span class="p">,</span>
|
||||
<span class="n">timestamp</span><span class="o">=</span><span class="n">timestamp</span><span class="p">)</span>
|
||||
<span class="n">prepared_statement</span> <span class="o">=</span> <span class="n">query</span><span class="o">.</span><span class="n">prepared_statement</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> <span class="n">BatchStatement</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_protocol_version</span> <span class="o"><</span> <span class="mi">2</span><span class="p">:</span>
|
||||
@@ -1252,7 +1343,8 @@
|
||||
<span class="s">"2 or higher (supported in Cassandra 2.0 and higher). Consider "</span>
|
||||
<span class="s">"setting Cluster.protocol_version to 2 to support this operation."</span><span class="p">)</span>
|
||||
<span class="n">message</span> <span class="o">=</span> <span class="n">BatchMessage</span><span class="p">(</span>
|
||||
<span class="n">query</span><span class="o">.</span><span class="n">batch_type</span><span class="p">,</span> <span class="n">query</span><span class="o">.</span><span class="n">_statements_and_parameters</span><span class="p">,</span> <span class="n">cl</span><span class="p">)</span>
|
||||
<span class="n">query</span><span class="o">.</span><span class="n">batch_type</span><span class="p">,</span> <span class="n">query</span><span class="o">.</span><span class="n">_statements_and_parameters</span><span class="p">,</span> <span class="n">cl</span><span class="p">,</span>
|
||||
<span class="n">query</span><span class="o">.</span><span class="n">serial_consistency_level</span><span class="p">,</span> <span class="n">timestamp</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">trace</span><span class="p">:</span>
|
||||
<span class="n">message</span><span class="o">.</span><span class="n">tracing</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
@@ -1297,7 +1389,8 @@
|
||||
<span class="k">raise</span>
|
||||
|
||||
<span class="n">prepared_statement</span> <span class="o">=</span> <span class="n">PreparedStatement</span><span class="o">.</span><span class="n">from_message</span><span class="p">(</span>
|
||||
<span class="n">query_id</span><span class="p">,</span> <span class="n">column_metadata</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cluster</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">query</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">keyspace</span><span class="p">)</span>
|
||||
<span class="n">query_id</span><span class="p">,</span> <span class="n">column_metadata</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cluster</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> <span class="n">query</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">keyspace</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_protocol_version</span><span class="p">)</span>
|
||||
|
||||
<span class="n">host</span> <span class="o">=</span> <span class="n">future</span><span class="o">.</span><span class="n">_current_host</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
@@ -1364,18 +1457,21 @@
|
||||
|
||||
<span class="k">def</span> <span class="nf">run_add_or_renew_pool</span><span class="p">():</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">new_pool</span> <span class="o">=</span> <span class="n">HostConnectionPool</span><span class="p">(</span><span class="n">host</span><span class="p">,</span> <span class="n">distance</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_protocol_version</span> <span class="o">>=</span> <span class="mi">3</span><span class="p">:</span>
|
||||
<span class="n">new_pool</span> <span class="o">=</span> <span class="n">HostConnection</span><span class="p">(</span><span class="n">host</span><span class="p">,</span> <span class="n">distance</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">new_pool</span> <span class="o">=</span> <span class="n">HostConnectionPool</span><span class="p">(</span><span class="n">host</span><span class="p">,</span> <span class="n">distance</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="n">AuthenticationFailed</span> <span class="k">as</span> <span class="n">auth_exc</span><span class="p">:</span>
|
||||
<span class="n">conn_exc</span> <span class="o">=</span> <span class="n">ConnectionException</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">auth_exc</span><span class="p">),</span> <span class="n">host</span><span class="o">=</span><span class="n">host</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">cluster</span><span class="o">.</span><span class="n">signal_connection_failure</span><span class="p">(</span><span class="n">host</span><span class="p">,</span> <span class="n">conn_exc</span><span class="p">,</span> <span class="n">is_host_addition</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="bp">False</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">conn_exc</span><span class="p">:</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s">"Failed to create connection pool for new host </span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">"</span><span class="p">,</span>
|
||||
<span class="n">host</span><span class="p">,</span> <span class="n">conn_exc</span><span class="p">)</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s">"Failed to create connection pool for new host </span><span class="si">%s</span><span class="s">:"</span><span class="p">,</span>
|
||||
<span class="n">host</span><span class="p">,</span> <span class="n">exc_info</span><span class="o">=</span><span class="n">conn_exc</span><span class="p">)</span>
|
||||
<span class="c"># the host itself will still be marked down, so we need to pass</span>
|
||||
<span class="c"># a special flag to make sure the reconnector is created</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">cluster</span><span class="o">.</span><span class="n">signal_connection_failure</span><span class="p">(</span>
|
||||
<span class="n">host</span><span class="p">,</span> <span class="n">conn_exc</span><span class="p">,</span> <span class="n">is_host_addition</span><span class="p">,</span> <span class="n">expect_host_to_be_down</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="n">host</span><span class="p">,</span> <span class="n">conn_exc</span><span class="p">,</span> <span class="n">is_host_addition</span><span class="p">,</span> <span class="n">expect_host_to_be_down</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="bp">False</span>
|
||||
|
||||
<span class="n">previous</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pools</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">host</span><span class="p">)</span>
|
||||
@@ -1469,6 +1565,22 @@
|
||||
<span class="k">for</span> <span class="n">pool</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pools</span><span class="o">.</span><span class="n">values</span><span class="p">():</span>
|
||||
<span class="n">pool</span><span class="o">.</span><span class="n">_set_keyspace_for_all_conns</span><span class="p">(</span><span class="n">keyspace</span><span class="p">,</span> <span class="n">pool_finished_setting_keyspace</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">user_type_registered</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">user_type</span><span class="p">,</span> <span class="n">klass</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Called by the parent Cluster instance when the user registers a new</span>
|
||||
<span class="sd"> mapping from a user-defined type to a class. Intended for internal</span>
|
||||
<span class="sd"> use only.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">type_meta</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">cluster</span><span class="o">.</span><span class="n">metadata</span><span class="o">.</span><span class="n">keyspaces</span><span class="p">[</span><span class="n">keyspace</span><span class="p">]</span><span class="o">.</span><span class="n">user_types</span><span class="p">[</span><span class="n">user_type</span><span class="p">]</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">encode</span><span class="p">(</span><span class="n">val</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s">'{ </span><span class="si">%s</span><span class="s"> }'</span> <span class="o">%</span> <span class="s">' , '</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="s">'</span><span class="si">%s</span><span class="s"> : </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span>
|
||||
<span class="n">field_name</span><span class="p">,</span>
|
||||
<span class="n">cql_encode_all_types</span><span class="p">(</span><span class="nb">getattr</span><span class="p">(</span><span class="n">val</span><span class="p">,</span> <span class="n">field_name</span><span class="p">))</span>
|
||||
<span class="p">)</span> <span class="k">for</span> <span class="n">field_name</span> <span class="ow">in</span> <span class="n">type_meta</span><span class="o">.</span><span class="n">field_names</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">encoders</span><span class="p">[</span><span class="n">klass</span><span class="p">]</span> <span class="o">=</span> <span class="n">encode</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">submit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">fn</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">""" Internal """</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_shutdown</span><span class="p">:</span>
|
||||
@@ -1533,6 +1645,7 @@
|
||||
<span class="n">_SELECT_KEYSPACES</span> <span class="o">=</span> <span class="s">"SELECT * FROM system.schema_keyspaces"</span>
|
||||
<span class="n">_SELECT_COLUMN_FAMILIES</span> <span class="o">=</span> <span class="s">"SELECT * FROM system.schema_columnfamilies"</span>
|
||||
<span class="n">_SELECT_COLUMNS</span> <span class="o">=</span> <span class="s">"SELECT * FROM system.schema_columns"</span>
|
||||
<span class="n">_SELECT_USERTYPES</span> <span class="o">=</span> <span class="s">"SELECT * FROM system.schema_usertypes"</span>
|
||||
|
||||
<span class="n">_SELECT_PEERS</span> <span class="o">=</span> <span class="s">"SELECT peer, data_center, rack, tokens, rpc_address, schema_version FROM system.peers"</span>
|
||||
<span class="n">_SELECT_LOCAL</span> <span class="o">=</span> <span class="s">"SELECT cluster_name, data_center, rack, tokens, partitioner, schema_version FROM system.local WHERE key='local'"</span>
|
||||
@@ -1542,6 +1655,7 @@
|
||||
|
||||
<span class="n">_is_shutdown</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="n">_timeout</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="n">_protocol_version</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
|
||||
<span class="c"># for testing purposes</span>
|
||||
<span class="n">_time</span> <span class="o">=</span> <span class="n">time</span>
|
||||
@@ -1563,6 +1677,7 @@
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_is_shutdown</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_protocol_version</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cluster</span><span class="o">.</span><span class="n">protocol_version</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_set_new_connection</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_reconnect_internal</span><span class="p">())</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_set_new_connection</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">conn</span><span class="p">):</span>
|
||||
@@ -1704,59 +1819,77 @@
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
||||
<span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">_connection</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">refresh_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">keyspace</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">table</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">refresh_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">keyspace</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">table</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">usertype</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_connection</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_refresh_schema</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_connection</span><span class="p">,</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">table</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_refresh_schema</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_connection</span><span class="p">,</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">table</span><span class="p">,</span> <span class="n">usertype</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">ReferenceError</span><span class="p">:</span>
|
||||
<span class="k">pass</span> <span class="c"># our weak reference to the Cluster is no good</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"[control connection] Error refreshing schema"</span><span class="p">,</span> <span class="n">exc_info</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_signal_error</span><span class="p">()</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_refresh_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">connection</span><span class="p">,</span> <span class="n">keyspace</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">table</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">preloaded_results</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">_refresh_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">connection</span><span class="p">,</span> <span class="n">keyspace</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">table</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">usertype</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">preloaded_results</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cluster</span><span class="o">.</span><span class="n">is_shutdown</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">assert</span> <span class="n">table</span> <span class="ow">is</span> <span class="bp">None</span> <span class="ow">or</span> <span class="n">usertype</span> <span class="ow">is</span> <span class="bp">None</span>
|
||||
|
||||
<span class="n">agreed</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wait_for_schema_agreement</span><span class="p">(</span><span class="n">connection</span><span class="p">,</span> <span class="n">preloaded_results</span><span class="o">=</span><span class="n">preloaded_results</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">agreed</span><span class="p">:</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"Skipping schema refresh due to lack of schema agreement"</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="n">where_clause</span> <span class="o">=</span> <span class="s">""</span>
|
||||
<span class="k">if</span> <span class="n">keyspace</span><span class="p">:</span>
|
||||
<span class="n">where_clause</span> <span class="o">=</span> <span class="s">" WHERE keyspace_name = '</span><span class="si">%s</span><span class="s">'"</span> <span class="o">%</span> <span class="p">(</span><span class="n">keyspace</span><span class="p">,)</span>
|
||||
<span class="k">if</span> <span class="n">table</span><span class="p">:</span>
|
||||
<span class="n">where_clause</span> <span class="o">+=</span> <span class="s">" AND columnfamily_name = '</span><span class="si">%s</span><span class="s">'"</span> <span class="o">%</span> <span class="p">(</span><span class="n">table</span><span class="p">,)</span>
|
||||
|
||||
<span class="n">cl</span> <span class="o">=</span> <span class="n">ConsistencyLevel</span><span class="o">.</span><span class="n">ONE</span>
|
||||
<span class="k">if</span> <span class="n">table</span><span class="p">:</span>
|
||||
<span class="n">ks_query</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">ks_query</span> <span class="o">=</span> <span class="n">QueryMessage</span><span class="p">(</span><span class="n">query</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_SELECT_KEYSPACES</span> <span class="o">+</span> <span class="n">where_clause</span><span class="p">,</span> <span class="n">consistency_level</span><span class="o">=</span><span class="n">cl</span><span class="p">)</span>
|
||||
<span class="n">cf_query</span> <span class="o">=</span> <span class="n">QueryMessage</span><span class="p">(</span><span class="n">query</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_SELECT_COLUMN_FAMILIES</span> <span class="o">+</span> <span class="n">where_clause</span><span class="p">,</span> <span class="n">consistency_level</span><span class="o">=</span><span class="n">cl</span><span class="p">)</span>
|
||||
<span class="n">col_query</span> <span class="o">=</span> <span class="n">QueryMessage</span><span class="p">(</span><span class="n">query</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_SELECT_COLUMNS</span> <span class="o">+</span> <span class="n">where_clause</span><span class="p">,</span> <span class="n">consistency_level</span><span class="o">=</span><span class="n">cl</span><span class="p">)</span>
|
||||
<span class="c"># a particular table changed</span>
|
||||
<span class="n">where_clause</span> <span class="o">=</span> <span class="s">" WHERE keyspace_name = '</span><span class="si">%s</span><span class="s">' AND columnfamily_name = '</span><span class="si">%s</span><span class="s">'"</span> <span class="o">%</span> <span class="p">(</span><span class="n">keyspace</span><span class="p">,</span> <span class="n">table</span><span class="p">)</span>
|
||||
<span class="n">cf_query</span> <span class="o">=</span> <span class="n">QueryMessage</span><span class="p">(</span><span class="n">query</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_SELECT_COLUMN_FAMILIES</span> <span class="o">+</span> <span class="n">where_clause</span><span class="p">,</span> <span class="n">consistency_level</span><span class="o">=</span><span class="n">cl</span><span class="p">)</span>
|
||||
<span class="n">col_query</span> <span class="o">=</span> <span class="n">QueryMessage</span><span class="p">(</span><span class="n">query</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_SELECT_COLUMNS</span> <span class="o">+</span> <span class="n">where_clause</span><span class="p">,</span> <span class="n">consistency_level</span><span class="o">=</span><span class="n">cl</span><span class="p">)</span>
|
||||
<span class="n">cf_result</span><span class="p">,</span> <span class="n">col_result</span> <span class="o">=</span> <span class="n">connection</span><span class="o">.</span><span class="n">wait_for_responses</span><span class="p">(</span>
|
||||
<span class="n">cf_query</span><span class="p">,</span> <span class="n">col_query</span><span class="p">)</span>
|
||||
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"[control connection] Fetched table info for </span><span class="si">%s</span><span class="s">.</span><span class="si">%s</span><span class="s">, rebuilding metadata"</span><span class="p">,</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">table</span><span class="p">)</span>
|
||||
<span class="n">cf_result</span> <span class="o">=</span> <span class="n">dict_factory</span><span class="p">(</span><span class="o">*</span><span class="n">cf_result</span><span class="o">.</span><span class="n">results</span><span class="p">)</span> <span class="k">if</span> <span class="n">cf_result</span> <span class="k">else</span> <span class="p">{}</span>
|
||||
<span class="n">col_result</span> <span class="o">=</span> <span class="n">dict_factory</span><span class="p">(</span><span class="o">*</span><span class="n">col_result</span><span class="o">.</span><span class="n">results</span><span class="p">)</span> <span class="k">if</span> <span class="n">col_result</span> <span class="k">else</span> <span class="p">{}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_cluster</span><span class="o">.</span><span class="n">metadata</span><span class="o">.</span><span class="n">table_changed</span><span class="p">(</span><span class="n">keyspace</span><span class="p">,</span> <span class="n">table</span><span class="p">,</span> <span class="n">cf_result</span><span class="p">,</span> <span class="n">col_result</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">usertype</span><span class="p">:</span>
|
||||
<span class="c"># user defined types within this keyspace changed</span>
|
||||
<span class="n">where_clause</span> <span class="o">=</span> <span class="s">" WHERE keyspace_name = '</span><span class="si">%s</span><span class="s">' AND type_name = '</span><span class="si">%s</span><span class="s">'"</span> <span class="o">%</span> <span class="p">(</span><span class="n">keyspace</span><span class="p">,</span> <span class="n">usertype</span><span class="p">)</span>
|
||||
<span class="n">types_query</span> <span class="o">=</span> <span class="n">QueryMessage</span><span class="p">(</span><span class="n">query</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_SELECT_USERTYPES</span> <span class="o">+</span> <span class="n">where_clause</span><span class="p">,</span> <span class="n">consistency_level</span><span class="o">=</span><span class="n">cl</span><span class="p">)</span>
|
||||
<span class="n">types_result</span> <span class="o">=</span> <span class="n">connection</span><span class="o">.</span><span class="n">wait_for_response</span><span class="p">(</span><span class="n">types_query</span><span class="p">)</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"[control connection] Fetched user type info for </span><span class="si">%s</span><span class="s">.</span><span class="si">%s</span><span class="s">, rebuilding metadata"</span><span class="p">,</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">usertype</span><span class="p">)</span>
|
||||
<span class="n">types_result</span> <span class="o">=</span> <span class="n">dict_factory</span><span class="p">(</span><span class="o">*</span><span class="n">types_result</span><span class="o">.</span><span class="n">results</span><span class="p">)</span> <span class="k">if</span> <span class="n">types_result</span><span class="o">.</span><span class="n">results</span> <span class="k">else</span> <span class="p">{}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_cluster</span><span class="o">.</span><span class="n">metadata</span><span class="o">.</span><span class="n">usertype_changed</span><span class="p">(</span><span class="n">keyspace</span><span class="p">,</span> <span class="n">usertype</span><span class="p">,</span> <span class="n">types_result</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">keyspace</span><span class="p">:</span>
|
||||
<span class="c"># only the keyspace itself changed (such as replication settings)</span>
|
||||
<span class="n">where_clause</span> <span class="o">=</span> <span class="s">" WHERE keyspace_name = '</span><span class="si">%s</span><span class="s">'"</span> <span class="o">%</span> <span class="p">(</span><span class="n">keyspace</span><span class="p">,)</span>
|
||||
<span class="n">ks_query</span> <span class="o">=</span> <span class="n">QueryMessage</span><span class="p">(</span><span class="n">query</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_SELECT_KEYSPACES</span> <span class="o">+</span> <span class="n">where_clause</span><span class="p">,</span> <span class="n">consistency_level</span><span class="o">=</span><span class="n">cl</span><span class="p">)</span>
|
||||
<span class="n">ks_result</span> <span class="o">=</span> <span class="n">connection</span><span class="o">.</span><span class="n">wait_for_response</span><span class="p">(</span><span class="n">ks_query</span><span class="p">)</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"[control connection] Fetched keyspace info for </span><span class="si">%s</span><span class="s">, rebuilding metadata"</span><span class="p">,</span> <span class="n">keyspace</span><span class="p">)</span>
|
||||
<span class="n">ks_result</span> <span class="o">=</span> <span class="n">dict_factory</span><span class="p">(</span><span class="o">*</span><span class="n">ks_result</span><span class="o">.</span><span class="n">results</span><span class="p">)</span> <span class="k">if</span> <span class="n">ks_result</span><span class="o">.</span><span class="n">results</span> <span class="k">else</span> <span class="p">{}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_cluster</span><span class="o">.</span><span class="n">metadata</span><span class="o">.</span><span class="n">keyspace_changed</span><span class="p">(</span><span class="n">keyspace</span><span class="p">,</span> <span class="n">ks_result</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c"># build everything from scratch</span>
|
||||
<span class="n">queries</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="n">QueryMessage</span><span class="p">(</span><span class="n">query</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_SELECT_KEYSPACES</span><span class="p">,</span> <span class="n">consistency_level</span><span class="o">=</span><span class="n">cl</span><span class="p">),</span>
|
||||
<span class="n">QueryMessage</span><span class="p">(</span><span class="n">query</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_SELECT_COLUMN_FAMILIES</span><span class="p">,</span> <span class="n">consistency_level</span><span class="o">=</span><span class="n">cl</span><span class="p">),</span>
|
||||
<span class="n">QueryMessage</span><span class="p">(</span><span class="n">query</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_SELECT_COLUMNS</span><span class="p">,</span> <span class="n">consistency_level</span><span class="o">=</span><span class="n">cl</span><span class="p">)</span>
|
||||
<span class="p">]</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_protocol_version</span> <span class="o">>=</span> <span class="mi">3</span><span class="p">:</span>
|
||||
<span class="n">queries</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">QueryMessage</span><span class="p">(</span><span class="n">query</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_SELECT_USERTYPES</span><span class="p">,</span> <span class="n">consistency_level</span><span class="o">=</span><span class="n">cl</span><span class="p">))</span>
|
||||
<span class="n">ks_result</span><span class="p">,</span> <span class="n">cf_result</span><span class="p">,</span> <span class="n">col_result</span><span class="p">,</span> <span class="n">types_result</span> <span class="o">=</span> <span class="n">connection</span><span class="o">.</span><span class="n">wait_for_responses</span><span class="p">(</span><span class="o">*</span><span class="n">queries</span><span class="p">)</span>
|
||||
<span class="n">types_result</span> <span class="o">=</span> <span class="n">dict_factory</span><span class="p">(</span><span class="o">*</span><span class="n">types_result</span><span class="o">.</span><span class="n">results</span><span class="p">)</span> <span class="k">if</span> <span class="n">types_result</span><span class="o">.</span><span class="n">results</span> <span class="k">else</span> <span class="p">{}</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">ks_result</span><span class="p">,</span> <span class="n">cf_result</span><span class="p">,</span> <span class="n">col_result</span> <span class="o">=</span> <span class="n">connection</span><span class="o">.</span><span class="n">wait_for_responses</span><span class="p">(</span><span class="o">*</span><span class="n">queries</span><span class="p">)</span>
|
||||
<span class="n">types_result</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">ks_query</span><span class="p">:</span>
|
||||
<span class="n">ks_result</span><span class="p">,</span> <span class="n">cf_result</span><span class="p">,</span> <span class="n">col_result</span> <span class="o">=</span> <span class="n">connection</span><span class="o">.</span><span class="n">wait_for_responses</span><span class="p">(</span>
|
||||
<span class="n">ks_query</span><span class="p">,</span> <span class="n">cf_query</span><span class="p">,</span> <span class="n">col_query</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_timeout</span><span class="p">)</span>
|
||||
<span class="n">ks_result</span> <span class="o">=</span> <span class="n">dict_factory</span><span class="p">(</span><span class="o">*</span><span class="n">ks_result</span><span class="o">.</span><span class="n">results</span><span class="p">)</span>
|
||||
<span class="n">cf_result</span> <span class="o">=</span> <span class="n">dict_factory</span><span class="p">(</span><span class="o">*</span><span class="n">cf_result</span><span class="o">.</span><span class="n">results</span><span class="p">)</span>
|
||||
<span class="n">col_result</span> <span class="o">=</span> <span class="n">dict_factory</span><span class="p">(</span><span class="o">*</span><span class="n">col_result</span><span class="o">.</span><span class="n">results</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">ks_result</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="n">cf_result</span><span class="p">,</span> <span class="n">col_result</span> <span class="o">=</span> <span class="n">connection</span><span class="o">.</span><span class="n">wait_for_responses</span><span class="p">(</span>
|
||||
<span class="n">cf_query</span><span class="p">,</span> <span class="n">col_query</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_timeout</span><span class="p">)</span>
|
||||
<span class="n">cf_result</span> <span class="o">=</span> <span class="n">dict_factory</span><span class="p">(</span><span class="o">*</span><span class="n">cf_result</span><span class="o">.</span><span class="n">results</span><span class="p">)</span>
|
||||
<span class="n">col_result</span> <span class="o">=</span> <span class="n">dict_factory</span><span class="p">(</span><span class="o">*</span><span class="n">col_result</span><span class="o">.</span><span class="n">results</span><span class="p">)</span>
|
||||
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"[control connection] Fetched schema, rebuilding metadata"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">table</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_cluster</span><span class="o">.</span><span class="n">metadata</span><span class="o">.</span><span class="n">table_changed</span><span class="p">(</span><span class="n">keyspace</span><span class="p">,</span> <span class="n">table</span><span class="p">,</span> <span class="n">cf_result</span><span class="p">,</span> <span class="n">col_result</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">keyspace</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_cluster</span><span class="o">.</span><span class="n">metadata</span><span class="o">.</span><span class="n">keyspace_changed</span><span class="p">(</span><span class="n">keyspace</span><span class="p">,</span> <span class="n">ks_result</span><span class="p">,</span> <span class="n">cf_result</span><span class="p">,</span> <span class="n">col_result</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_cluster</span><span class="o">.</span><span class="n">metadata</span><span class="o">.</span><span class="n">rebuild_schema</span><span class="p">(</span><span class="n">ks_result</span><span class="p">,</span> <span class="n">cf_result</span><span class="p">,</span> <span class="n">col_result</span><span class="p">)</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"[control connection] Fetched schema, rebuilding metadata"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_cluster</span><span class="o">.</span><span class="n">metadata</span><span class="o">.</span><span class="n">rebuild_schema</span><span class="p">(</span><span class="n">ks_result</span><span class="p">,</span> <span class="n">types_result</span><span class="p">,</span> <span class="n">cf_result</span><span class="p">,</span> <span class="n">col_result</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">refresh_node_list_and_token_map</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">force_token_rebuild</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
@@ -1804,7 +1937,10 @@
|
||||
<span class="k">if</span> <span class="n">partitioner</span> <span class="ow">and</span> <span class="n">tokens</span><span class="p">:</span>
|
||||
<span class="n">token_map</span><span class="p">[</span><span class="n">host</span><span class="p">]</span> <span class="o">=</span> <span class="n">tokens</span>
|
||||
|
||||
<span class="n">should_rebuild_token_map</span> <span class="o">=</span> <span class="n">force_token_rebuild</span>
|
||||
<span class="c"># Check metadata.partitioner to see if we haven't built anything yet. If</span>
|
||||
<span class="c"># every node in the cluster was in the contact points, we won't discover</span>
|
||||
<span class="c"># any new nodes, so we need this additional check. (See PYTHON-90)</span>
|
||||
<span class="n">should_rebuild_token_map</span> <span class="o">=</span> <span class="n">force_token_rebuild</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cluster</span><span class="o">.</span><span class="n">metadata</span><span class="o">.</span><span class="n">partitioner</span> <span class="ow">is</span> <span class="bp">None</span>
|
||||
<span class="n">found_hosts</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span>
|
||||
<span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">peers_result</span><span class="p">:</span>
|
||||
<span class="n">addr</span> <span class="o">=</span> <span class="n">row</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">"rpc_address"</span><span class="p">)</span>
|
||||
@@ -1886,12 +2022,9 @@
|
||||
|
||||
<span class="k">def</span> <span class="nf">_handle_schema_change</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
|
||||
<span class="n">keyspace</span> <span class="o">=</span> <span class="n">event</span><span class="p">[</span><span class="s">'keyspace'</span><span class="p">]</span> <span class="ow">or</span> <span class="bp">None</span>
|
||||
<span class="n">table</span> <span class="o">=</span> <span class="n">event</span><span class="p">[</span><span class="s">'table'</span><span class="p">]</span> <span class="ow">or</span> <span class="bp">None</span>
|
||||
<span class="k">if</span> <span class="n">event</span><span class="p">[</span><span class="s">'change_type'</span><span class="p">]</span> <span class="ow">in</span> <span class="p">(</span><span class="s">"CREATED"</span><span class="p">,</span> <span class="s">"DROPPED"</span><span class="p">):</span>
|
||||
<span class="n">keyspace</span> <span class="o">=</span> <span class="n">keyspace</span> <span class="k">if</span> <span class="n">table</span> <span class="k">else</span> <span class="bp">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_submit</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">refresh_schema</span><span class="p">,</span> <span class="n">keyspace</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">event</span><span class="p">[</span><span class="s">'change_type'</span><span class="p">]</span> <span class="o">==</span> <span class="s">"UPDATED"</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_submit</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">refresh_schema</span><span class="p">,</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">table</span><span class="p">)</span>
|
||||
<span class="n">table</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">'table'</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">None</span>
|
||||
<span class="n">usertype</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">'type'</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_submit</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">refresh_schema</span><span class="p">,</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">table</span><span class="p">,</span> <span class="n">usertype</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">wait_for_schema_agreement</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">connection</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">preloaded_results</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
|
||||
<span class="c"># Each schema change typically generates two schema refreshes, one</span>
|
||||
@@ -1928,7 +2061,7 @@
|
||||
<span class="n">peers_result</span><span class="p">,</span> <span class="n">local_result</span> <span class="o">=</span> <span class="n">connection</span><span class="o">.</span><span class="n">wait_for_responses</span><span class="p">(</span>
|
||||
<span class="n">peers_query</span><span class="p">,</span> <span class="n">local_query</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="n">timeout</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="n">OperationTimedOut</span> <span class="k">as</span> <span class="n">timeout</span><span class="p">:</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"[control connection] Timed out waiting for "</span> \
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"[control connection] Timed out waiting for "</span>
|
||||
<span class="s">"response during schema agreement check: </span><span class="si">%s</span><span class="s">"</span><span class="p">,</span> <span class="n">timeout</span><span class="p">)</span>
|
||||
<span class="n">elapsed</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> <span class="o">-</span> <span class="n">start</span>
|
||||
<span class="k">continue</span>
|
||||
@@ -2094,12 +2227,15 @@
|
||||
<span class="n">exc_info</span><span class="o">=</span><span class="n">exc</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">refresh_schema_and_set_result</span><span class="p">(</span><span class="n">keyspace</span><span class="p">,</span> <span class="n">table</span><span class="p">,</span> <span class="n">control_conn</span><span class="p">,</span> <span class="n">response_future</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">refresh_schema_and_set_result</span><span class="p">(</span><span class="n">keyspace</span><span class="p">,</span> <span class="n">table</span><span class="p">,</span> <span class="n">usertype</span><span class="p">,</span> <span class="n">control_conn</span><span class="p">,</span> <span class="n">response_future</span><span class="p">):</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">control_conn</span><span class="o">.</span><span class="n">_refresh_schema</span><span class="p">(</span><span class="n">response_future</span><span class="o">.</span><span class="n">_connection</span><span class="p">,</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">table</span><span class="p">)</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"Refreshing schema in response to schema change. Keyspace: </span><span class="si">%s</span><span class="s">; Table: </span><span class="si">%s</span><span class="s">, Type: </span><span class="si">%s</span><span class="s">"</span><span class="p">,</span>
|
||||
<span class="n">keyspace</span><span class="p">,</span> <span class="n">table</span><span class="p">,</span> <span class="n">usertype</span><span class="p">)</span>
|
||||
<span class="n">control_conn</span><span class="o">.</span><span class="n">_refresh_schema</span><span class="p">(</span><span class="n">response_future</span><span class="o">.</span><span class="n">_connection</span><span class="p">,</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">table</span><span class="p">,</span> <span class="n">usertype</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">exception</span><span class="p">(</span><span class="s">"Exception refreshing schema in response to schema change:"</span><span class="p">)</span>
|
||||
<span class="n">response_future</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">submit</span><span class="p">(</span><span class="n">control_conn</span><span class="o">.</span><span class="n">refresh_schema</span><span class="p">,</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">table</span><span class="p">)</span>
|
||||
<span class="n">response_future</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">submit</span><span class="p">(</span>
|
||||
<span class="n">control_conn</span><span class="o">.</span><span class="n">refresh_schema</span><span class="p">,</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">table</span><span class="p">,</span> <span class="n">usertype</span><span class="p">)</span>
|
||||
<span class="k">finally</span><span class="p">:</span>
|
||||
<span class="n">response_future</span><span class="o">.</span><span class="n">_set_final_result</span><span class="p">(</span><span class="bp">None</span><span class="p">)</span>
|
||||
|
||||
@@ -2194,8 +2330,8 @@
|
||||
<span class="n">connection</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="c"># TODO get connectTimeout from cluster settings</span>
|
||||
<span class="n">connection</span> <span class="o">=</span> <span class="n">pool</span><span class="o">.</span><span class="n">borrow_connection</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="mf">2.0</span><span class="p">)</span>
|
||||
<span class="n">request_id</span> <span class="o">=</span> <span class="n">connection</span><span class="o">.</span><span class="n">send_msg</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">cb</span><span class="o">=</span><span class="n">cb</span><span class="p">)</span>
|
||||
<span class="n">connection</span><span class="p">,</span> <span class="n">request_id</span> <span class="o">=</span> <span class="n">pool</span><span class="o">.</span><span class="n">borrow_connection</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="mf">2.0</span><span class="p">)</span>
|
||||
<span class="n">connection</span><span class="o">.</span><span class="n">send_msg</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">request_id</span><span class="p">,</span> <span class="n">cb</span><span class="o">=</span><span class="n">cb</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="n">NoConnectionsAvailable</span> <span class="k">as</span> <span class="n">exc</span><span class="p">:</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"All connections for host </span><span class="si">%s</span><span class="s"> are at capacity, moving to the next host"</span><span class="p">,</span> <span class="n">host</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_errors</span><span class="p">[</span><span class="n">host</span><span class="p">]</span> <span class="o">=</span> <span class="n">exc</span>
|
||||
@@ -2280,7 +2416,8 @@
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">submit</span><span class="p">(</span>
|
||||
<span class="n">refresh_schema_and_set_result</span><span class="p">,</span>
|
||||
<span class="n">response</span><span class="o">.</span><span class="n">results</span><span class="p">[</span><span class="s">'keyspace'</span><span class="p">],</span>
|
||||
<span class="n">response</span><span class="o">.</span><span class="n">results</span><span class="p">[</span><span class="s">'table'</span><span class="p">],</span>
|
||||
<span class="n">response</span><span class="o">.</span><span class="n">results</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">'table'</span><span class="p">),</span>
|
||||
<span class="n">response</span><span class="o">.</span><span class="n">results</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">'type'</span><span class="p">),</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">cluster</span><span class="o">.</span><span class="n">control_connection</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
@@ -2642,6 +2779,11 @@
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_callback</span><span class="p">(</span><span class="n">callback</span><span class="p">,</span> <span class="o">*</span><span class="n">callback_args</span><span class="p">,</span> <span class="o">**</span><span class="p">(</span><span class="n">callback_kwargs</span> <span class="ow">or</span> <span class="p">{}))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_errback</span><span class="p">(</span><span class="n">errback</span><span class="p">,</span> <span class="o">*</span><span class="n">errback_args</span><span class="p">,</span> <span class="o">**</span><span class="p">(</span><span class="n">errback_kwargs</span> <span class="ow">or</span> <span class="p">{}))</span>
|
||||
</div>
|
||||
<span class="k">def</span> <span class="nf">clear_callbacks</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">_callback_lock</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_callback</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_errback</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">result</span> <span class="o">=</span> <span class="s">"(no result yet)"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_final_result</span> <span class="ow">is</span> <span class="n">_NOT_SET</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_final_result</span>
|
||||
<span class="k">return</span> <span class="s">"<ResponseFuture: query='</span><span class="si">%s</span><span class="s">' request_id=</span><span class="si">%s</span><span class="s"> result=</span><span class="si">%s</span><span class="s"> exception=</span><span class="si">%s</span><span class="s"> host=</span><span class="si">%s</span><span class="s">>"</span> \
|
||||
@@ -2682,6 +2824,8 @@
|
||||
<span class="sd"> .. versionadded: 2.0.0</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">response_future</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">response_future</span><span class="p">,</span> <span class="n">initial_response</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">response_future</span> <span class="o">=</span> <span class="n">response_future</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">current_response</span> <span class="o">=</span> <span class="nb">iter</span><span class="p">(</span><span class="n">initial_response</span><span class="p">)</span>
|
||||
@@ -2693,7 +2837,7 @@
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="nb">next</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">current_response</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">StopIteration</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">response_future</span><span class="o">.</span><span class="n">_paging_state</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">response_future</span><span class="o">.</span><span class="n">has_more_pages</span><span class="p">:</span>
|
||||
<span class="k">raise</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">response_future</span><span class="o">.</span><span class="n">start_fetching_next_page</span><span class="p">()</span>
|
||||
@@ -2722,7 +2866,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" >Module code</a> »</li>
|
||||
<li><a href="../cassandra.html" >cassandra</a> »</li>
|
||||
</ul>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>cassandra.concurrent — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>cassandra.concurrent — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../../_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="../../index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="../../index.html" />
|
||||
<link rel="up" title="cassandra" href="../cassandra.html" />
|
||||
</head>
|
||||
<body>
|
||||
@@ -36,7 +36,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" >Module code</a> »</li>
|
||||
<li><a href="../cassandra.html" accesskey="U">cassandra</a> »</li>
|
||||
</ul>
|
||||
@@ -83,9 +83,14 @@
|
||||
<span class="kn">import</span> <span class="nn">sys</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">itertools</span> <span class="kn">import</span> <span class="n">count</span><span class="p">,</span> <span class="n">cycle</span>
|
||||
<span class="kn">import</span> <span class="nn">logging</span>
|
||||
<span class="kn">from</span> <span class="nn">six.moves</span> <span class="kn">import</span> <span class="nb">xrange</span>
|
||||
<span class="kn">from</span> <span class="nn">threading</span> <span class="kn">import</span> <span class="n">Event</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">cassandra.cluster</span> <span class="kn">import</span> <span class="n">PagedResult</span>
|
||||
|
||||
<span class="n">log</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="n">__name__</span><span class="p">)</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="execute_concurrent"><a class="viewcode-back" href="../../api/cassandra/concurrent.html#cassandra.concurrent.execute_concurrent">[docs]</a><span class="k">def</span> <span class="nf">execute_concurrent</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="n">statements_and_parameters</span><span class="p">,</span> <span class="n">concurrency</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> <span class="n">raise_on_first_error</span><span class="o">=</span><span class="bp">True</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
@@ -148,7 +153,7 @@
|
||||
<span class="n">num_finished</span> <span class="o">=</span> <span class="n">count</span><span class="p">(</span><span class="n">start</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">statements</span> <span class="o">=</span> <span class="nb">enumerate</span><span class="p">(</span><span class="nb">iter</span><span class="p">(</span><span class="n">statements_and_parameters</span><span class="p">))</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">xrange</span><span class="p">(</span><span class="nb">min</span><span class="p">(</span><span class="n">concurrency</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">statements_and_parameters</span><span class="p">))):</span>
|
||||
<span class="n">_execute_next</span><span class="p">(</span><span class="n">_sentinel</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="n">event</span><span class="p">,</span> <span class="n">session</span><span class="p">,</span> <span class="n">statements</span><span class="p">,</span> <span class="n">results</span><span class="p">,</span> <span class="n">num_finished</span><span class="p">,</span> <span class="n">to_execute</span><span class="p">,</span> <span class="n">first_error</span><span class="p">)</span>
|
||||
<span class="n">_execute_next</span><span class="p">(</span><span class="n">_sentinel</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="n">event</span><span class="p">,</span> <span class="n">session</span><span class="p">,</span> <span class="n">statements</span><span class="p">,</span> <span class="n">results</span><span class="p">,</span> <span class="bp">None</span><span class="p">,</span> <span class="n">num_finished</span><span class="p">,</span> <span class="n">to_execute</span><span class="p">,</span> <span class="n">first_error</span><span class="p">)</span>
|
||||
|
||||
<span class="n">event</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">first_error</span><span class="p">:</span>
|
||||
@@ -180,7 +185,8 @@
|
||||
<span class="n">_sentinel</span> <span class="o">=</span> <span class="nb">object</span><span class="p">()</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">_handle_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="n">result_index</span><span class="p">,</span> <span class="n">event</span><span class="p">,</span> <span class="n">session</span><span class="p">,</span> <span class="n">statements</span><span class="p">,</span> <span class="n">results</span><span class="p">,</span> <span class="n">num_finished</span><span class="p">,</span> <span class="n">to_execute</span><span class="p">,</span> <span class="n">first_error</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">_handle_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="n">result_index</span><span class="p">,</span> <span class="n">event</span><span class="p">,</span> <span class="n">session</span><span class="p">,</span> <span class="n">statements</span><span class="p">,</span> <span class="n">results</span><span class="p">,</span>
|
||||
<span class="n">future</span><span class="p">,</span> <span class="n">num_finished</span><span class="p">,</span> <span class="n">to_execute</span><span class="p">,</span> <span class="n">first_error</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">first_error</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="n">first_error</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">error</span><span class="p">)</span>
|
||||
<span class="n">event</span><span class="o">.</span><span class="n">set</span><span class="p">()</span>
|
||||
@@ -196,9 +202,10 @@
|
||||
<span class="k">except</span> <span class="ne">StopIteration</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="n">args</span> <span class="o">=</span> <span class="p">(</span><span class="n">next_index</span><span class="p">,</span> <span class="n">event</span><span class="p">,</span> <span class="n">session</span><span class="p">,</span> <span class="n">statements</span><span class="p">,</span> <span class="n">results</span><span class="p">,</span> <span class="n">num_finished</span><span class="p">,</span> <span class="n">to_execute</span><span class="p">,</span> <span class="n">first_error</span><span class="p">)</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">session</span><span class="o">.</span><span class="n">execute_async</span><span class="p">(</span><span class="n">statement</span><span class="p">,</span> <span class="n">params</span><span class="p">)</span><span class="o">.</span><span class="n">add_callbacks</span><span class="p">(</span>
|
||||
<span class="n">future</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="n">execute_async</span><span class="p">(</span><span class="n">statement</span><span class="p">,</span> <span class="n">params</span><span class="p">)</span>
|
||||
<span class="n">args</span> <span class="o">=</span> <span class="p">(</span><span class="n">next_index</span><span class="p">,</span> <span class="n">event</span><span class="p">,</span> <span class="n">session</span><span class="p">,</span> <span class="n">statements</span><span class="p">,</span> <span class="n">results</span><span class="p">,</span> <span class="n">future</span><span class="p">,</span> <span class="n">num_finished</span><span class="p">,</span> <span class="n">to_execute</span><span class="p">,</span> <span class="n">first_error</span><span class="p">)</span>
|
||||
<span class="n">future</span><span class="o">.</span><span class="n">add_callbacks</span><span class="p">(</span>
|
||||
<span class="n">callback</span><span class="o">=</span><span class="n">_execute_next</span><span class="p">,</span> <span class="n">callback_args</span><span class="o">=</span><span class="n">args</span><span class="p">,</span>
|
||||
<span class="n">errback</span><span class="o">=</span><span class="n">_handle_error</span><span class="p">,</span> <span class="n">errback_args</span><span class="o">=</span><span class="n">args</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">exc</span><span class="p">:</span>
|
||||
@@ -216,8 +223,12 @@
|
||||
<span class="k">return</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">_execute_next</span><span class="p">(</span><span class="n">result</span><span class="p">,</span> <span class="n">result_index</span><span class="p">,</span> <span class="n">event</span><span class="p">,</span> <span class="n">session</span><span class="p">,</span> <span class="n">statements</span><span class="p">,</span> <span class="n">results</span><span class="p">,</span> <span class="n">num_finished</span><span class="p">,</span> <span class="n">to_execute</span><span class="p">,</span> <span class="n">first_error</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">_execute_next</span><span class="p">(</span><span class="n">result</span><span class="p">,</span> <span class="n">result_index</span><span class="p">,</span> <span class="n">event</span><span class="p">,</span> <span class="n">session</span><span class="p">,</span> <span class="n">statements</span><span class="p">,</span> <span class="n">results</span><span class="p">,</span>
|
||||
<span class="n">future</span><span class="p">,</span> <span class="n">num_finished</span><span class="p">,</span> <span class="n">to_execute</span><span class="p">,</span> <span class="n">first_error</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">result</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">_sentinel</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">future</span><span class="o">.</span><span class="n">has_more_pages</span><span class="p">:</span>
|
||||
<span class="n">result</span> <span class="o">=</span> <span class="n">PagedResult</span><span class="p">(</span><span class="n">future</span><span class="p">,</span> <span class="n">result</span><span class="p">)</span>
|
||||
<span class="n">future</span><span class="o">.</span><span class="n">clear_callbacks</span><span class="p">()</span>
|
||||
<span class="n">results</span><span class="p">[</span><span class="n">result_index</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="bp">True</span><span class="p">,</span> <span class="n">result</span><span class="p">)</span>
|
||||
<span class="n">finished</span> <span class="o">=</span> <span class="nb">next</span><span class="p">(</span><span class="n">num_finished</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">finished</span> <span class="o">>=</span> <span class="n">to_execute</span><span class="p">:</span>
|
||||
@@ -229,9 +240,10 @@
|
||||
<span class="k">except</span> <span class="ne">StopIteration</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="n">args</span> <span class="o">=</span> <span class="p">(</span><span class="n">next_index</span><span class="p">,</span> <span class="n">event</span><span class="p">,</span> <span class="n">session</span><span class="p">,</span> <span class="n">statements</span><span class="p">,</span> <span class="n">results</span><span class="p">,</span> <span class="n">num_finished</span><span class="p">,</span> <span class="n">to_execute</span><span class="p">,</span> <span class="n">first_error</span><span class="p">)</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">session</span><span class="o">.</span><span class="n">execute_async</span><span class="p">(</span><span class="n">statement</span><span class="p">,</span> <span class="n">params</span><span class="p">)</span><span class="o">.</span><span class="n">add_callbacks</span><span class="p">(</span>
|
||||
<span class="n">future</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="n">execute_async</span><span class="p">(</span><span class="n">statement</span><span class="p">,</span> <span class="n">params</span><span class="p">)</span>
|
||||
<span class="n">args</span> <span class="o">=</span> <span class="p">(</span><span class="n">next_index</span><span class="p">,</span> <span class="n">event</span><span class="p">,</span> <span class="n">session</span><span class="p">,</span> <span class="n">statements</span><span class="p">,</span> <span class="n">results</span><span class="p">,</span> <span class="n">future</span><span class="p">,</span> <span class="n">num_finished</span><span class="p">,</span> <span class="n">to_execute</span><span class="p">,</span> <span class="n">first_error</span><span class="p">)</span>
|
||||
<span class="n">future</span><span class="o">.</span><span class="n">add_callbacks</span><span class="p">(</span>
|
||||
<span class="n">callback</span><span class="o">=</span><span class="n">_execute_next</span><span class="p">,</span> <span class="n">callback_args</span><span class="o">=</span><span class="n">args</span><span class="p">,</span>
|
||||
<span class="n">errback</span><span class="o">=</span><span class="n">_handle_error</span><span class="p">,</span> <span class="n">errback_args</span><span class="o">=</span><span class="n">args</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">exc</span><span class="p">:</span>
|
||||
@@ -263,7 +275,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" >Module code</a> »</li>
|
||||
<li><a href="../cassandra.html" >cassandra</a> »</li>
|
||||
</ul>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>cassandra.connection — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>cassandra.connection — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../../_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="../../index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="../../index.html" />
|
||||
<link rel="up" title="cassandra" href="../cassandra.html" />
|
||||
</head>
|
||||
<body>
|
||||
@@ -36,7 +36,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" >Module code</a> »</li>
|
||||
<li><a href="../cassandra.html" accesskey="U">cassandra</a> »</li>
|
||||
</ul>
|
||||
@@ -79,10 +79,13 @@
|
||||
<span class="c"># See the License for the specific language governing permissions and</span>
|
||||
<span class="c"># limitations under the License.</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">collections</span> <span class="kn">import</span> <span class="n">defaultdict</span>
|
||||
<span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span> <span class="c"># to enable import io from stdlib</span>
|
||||
<span class="kn">from</span> <span class="nn">collections</span> <span class="kn">import</span> <span class="n">defaultdict</span><span class="p">,</span> <span class="n">deque</span>
|
||||
<span class="kn">import</span> <span class="nn">errno</span>
|
||||
<span class="kn">from</span> <span class="nn">functools</span> <span class="kn">import</span> <span class="n">wraps</span><span class="p">,</span> <span class="n">partial</span>
|
||||
<span class="kn">import</span> <span class="nn">io</span>
|
||||
<span class="kn">import</span> <span class="nn">logging</span>
|
||||
<span class="kn">import</span> <span class="nn">os</span>
|
||||
<span class="kn">import</span> <span class="nn">sys</span>
|
||||
<span class="kn">from</span> <span class="nn">threading</span> <span class="kn">import</span> <span class="n">Event</span><span class="p">,</span> <span class="n">RLock</span>
|
||||
<span class="kn">import</span> <span class="nn">time</span>
|
||||
@@ -96,13 +99,13 @@
|
||||
<span class="kn">from</span> <span class="nn">six.moves</span> <span class="kn">import</span> <span class="nb">range</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">cassandra</span> <span class="kn">import</span> <span class="n">ConsistencyLevel</span><span class="p">,</span> <span class="n">AuthenticationFailed</span><span class="p">,</span> <span class="n">OperationTimedOut</span>
|
||||
<span class="kn">from</span> <span class="nn">cassandra.marshal</span> <span class="kn">import</span> <span class="n">int32_pack</span><span class="p">,</span> <span class="n">header_unpack</span>
|
||||
<span class="kn">from</span> <span class="nn">cassandra.marshal</span> <span class="kn">import</span> <span class="n">int32_pack</span><span class="p">,</span> <span class="n">header_unpack</span><span class="p">,</span> <span class="n">v3_header_unpack</span><span class="p">,</span> <span class="n">int32_unpack</span>
|
||||
<span class="kn">from</span> <span class="nn">cassandra.protocol</span> <span class="kn">import</span> <span class="p">(</span><span class="n">ReadyMessage</span><span class="p">,</span> <span class="n">AuthenticateMessage</span><span class="p">,</span> <span class="n">OptionsMessage</span><span class="p">,</span>
|
||||
<span class="n">StartupMessage</span><span class="p">,</span> <span class="n">ErrorMessage</span><span class="p">,</span> <span class="n">CredentialsMessage</span><span class="p">,</span>
|
||||
<span class="n">QueryMessage</span><span class="p">,</span> <span class="n">ResultMessage</span><span class="p">,</span> <span class="n">decode_response</span><span class="p">,</span>
|
||||
<span class="n">InvalidRequestException</span><span class="p">,</span> <span class="n">SupportedMessage</span><span class="p">,</span>
|
||||
<span class="n">AuthResponseMessage</span><span class="p">,</span> <span class="n">AuthChallengeMessage</span><span class="p">,</span>
|
||||
<span class="n">AuthSuccessMessage</span><span class="p">)</span>
|
||||
<span class="n">AuthSuccessMessage</span><span class="p">,</span> <span class="n">ProtocolException</span><span class="p">)</span>
|
||||
<span class="kn">from</span> <span class="nn">cassandra.util</span> <span class="kn">import</span> <span class="n">OrderedDict</span>
|
||||
|
||||
|
||||
@@ -146,8 +149,6 @@
|
||||
<span class="n">locally_supported_compressions</span><span class="p">[</span><span class="s">'snappy'</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">snappy</span><span class="o">.</span><span class="n">compress</span><span class="p">,</span> <span class="n">decompress</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="n">MAX_STREAM_PER_CONNECTION</span> <span class="o">=</span> <span class="mi">127</span>
|
||||
|
||||
<span class="n">PROTOCOL_VERSION_MASK</span> <span class="o">=</span> <span class="mh">0x7f</span>
|
||||
|
||||
<span class="n">HEADER_DIRECTION_FROM_CLIENT</span> <span class="o">=</span> <span class="mh">0x00</span>
|
||||
@@ -219,16 +220,32 @@
|
||||
|
||||
<span class="n">ssl_options</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="n">last_error</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
|
||||
<span class="c"># The current number of operations that are in flight. More precisely,</span>
|
||||
<span class="c"># the number of request IDs that are currently in use.</span>
|
||||
<span class="n">in_flight</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
|
||||
<span class="c"># A set of available request IDs. When using the v3 protocol or higher,</span>
|
||||
<span class="c"># this will no initially include all request IDs in order to save memory,</span>
|
||||
<span class="c"># but the set will grow if it is exhausted.</span>
|
||||
<span class="n">request_ids</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
|
||||
<span class="c"># Tracks the highest used request ID in order to help with growing the</span>
|
||||
<span class="c"># request_ids set</span>
|
||||
<span class="n">highest_request_id</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
|
||||
<span class="n">is_defunct</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="n">is_closed</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="n">lock</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="n">user_type_map</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
|
||||
<span class="n">is_control_connection</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="n">_iobuf</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="o">=</span><span class="s">'127.0.0.1'</span><span class="p">,</span> <span class="n">port</span><span class="o">=</span><span class="mi">9042</span><span class="p">,</span> <span class="n">authenticator</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
|
||||
<span class="n">ssl_options</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">sockopts</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">compression</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
|
||||
<span class="n">cql_version</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">protocol_version</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">is_control_connection</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
|
||||
<span class="n">cql_version</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">protocol_version</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">is_control_connection</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
|
||||
<span class="n">user_type_map</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">host</span> <span class="o">=</span> <span class="n">host</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">port</span> <span class="o">=</span> <span class="n">port</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">authenticator</span> <span class="o">=</span> <span class="n">authenticator</span>
|
||||
@@ -238,11 +255,36 @@
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">cql_version</span> <span class="o">=</span> <span class="n">cql_version</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">protocol_version</span> <span class="o">=</span> <span class="n">protocol_version</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">is_control_connection</span> <span class="o">=</span> <span class="n">is_control_connection</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">user_type_map</span> <span class="o">=</span> <span class="n">user_type_map</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_push_watchers</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">set</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span> <span class="o">=</span> <span class="n">io</span><span class="o">.</span><span class="n">BytesIO</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">protocol_version</span> <span class="o">>=</span> <span class="mi">3</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_header_unpack</span> <span class="o">=</span> <span class="n">v3_header_unpack</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_header_length</span> <span class="o">=</span> <span class="mi">5</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">max_request_id</span> <span class="o">=</span> <span class="p">(</span><span class="mi">2</span> <span class="o">**</span> <span class="mi">15</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span>
|
||||
<span class="c"># Don't fill the deque with 2**15 items right away. Start with 300 and add</span>
|
||||
<span class="c"># more if needed.</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">request_ids</span> <span class="o">=</span> <span class="n">deque</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="mi">300</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">highest_request_id</span> <span class="o">=</span> <span class="mi">299</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_header_unpack</span> <span class="o">=</span> <span class="n">header_unpack</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_header_length</span> <span class="o">=</span> <span class="mi">4</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">max_request_id</span> <span class="o">=</span> <span class="p">(</span><span class="mi">2</span> <span class="o">**</span> <span class="mi">7</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">request_ids</span> <span class="o">=</span> <span class="n">deque</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">max_request_id</span> <span class="o">+</span> <span class="mi">1</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">highest_request_id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_request_id</span> <span class="o">+</span> <span class="mi">1</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_id_queue</span> <span class="o">=</span> <span class="n">Queue</span><span class="p">(</span><span class="n">MAX_STREAM_PER_CONNECTION</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">MAX_STREAM_PER_CONNECTION</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_id_queue</span><span class="o">.</span><span class="n">put_nowait</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
|
||||
<span class="c"># 0 8 16 24 32 40</span>
|
||||
<span class="c"># +---------+---------+---------+---------+---------+</span>
|
||||
<span class="c"># | version | flags | stream | opcode |</span>
|
||||
<span class="c"># +---------+---------+---------+---------+---------+</span>
|
||||
<span class="c"># | length |</span>
|
||||
<span class="c"># +---------+---------+---------+---------+</span>
|
||||
<span class="c"># | |</span>
|
||||
<span class="c"># . ... body ... .</span>
|
||||
<span class="c"># . .</span>
|
||||
<span class="c"># . .</span>
|
||||
<span class="c"># +----------------------------------------</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_full_header_length</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_header_length</span> <span class="o">+</span> <span class="mi">4</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">lock</span> <span class="o">=</span> <span class="n">RLock</span><span class="p">()</span>
|
||||
|
||||
@@ -251,6 +293,14 @@
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Called once by Cluster.connect(). This should be used by implementations</span>
|
||||
<span class="sd"> to set up any resources that will be shared across connections.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">pass</span>
|
||||
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">handle_fork</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Called after a forking. This should cleanup any remaining reactor state</span>
|
||||
<span class="sd"> from the parent process.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">pass</span>
|
||||
|
||||
@@ -285,6 +335,18 @@
|
||||
<span class="s">"failed connection (</span><span class="si">%s</span><span class="s">) to host </span><span class="si">%s</span><span class="s">:"</span><span class="p">,</span>
|
||||
<span class="nb">id</span><span class="p">(</span><span class="bp">self</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">,</span> <span class="n">exc_info</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_request_id</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> This must be called while self.lock is held.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">request_ids</span><span class="o">.</span><span class="n">popleft</span><span class="p">()</span>
|
||||
<span class="k">except</span> <span class="ne">IndexError</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">highest_request_id</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
<span class="c"># in_flight checks should guarantee this</span>
|
||||
<span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">highest_request_id</span> <span class="o"><=</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_request_id</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">highest_request_id</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">handle_pushed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">response</span><span class="p">):</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"Message pushed from server: </span><span class="si">%r</span><span class="s">"</span><span class="p">,</span> <span class="n">response</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">cb</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_push_watchers</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">response</span><span class="o">.</span><span class="n">event_type</span><span class="p">,</span> <span class="p">[]):</span>
|
||||
@@ -293,21 +355,12 @@
|
||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">exception</span><span class="p">(</span><span class="s">"Pushed event handler errored, ignoring:"</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">send_msg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="n">cb</span><span class="p">,</span> <span class="n">wait_for_id</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">send_msg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="n">request_id</span><span class="p">,</span> <span class="n">cb</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_defunct</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">ConnectionShutdown</span><span class="p">(</span><span class="s">"Connection to </span><span class="si">%s</span><span class="s"> is defunct"</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_closed</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">ConnectionShutdown</span><span class="p">(</span><span class="s">"Connection to </span><span class="si">%s</span><span class="s"> is closed"</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">wait_for_id</span><span class="p">:</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">request_id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_id_queue</span><span class="o">.</span><span class="n">get_nowait</span><span class="p">()</span>
|
||||
<span class="k">except</span> <span class="n">Empty</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">ConnectionBusy</span><span class="p">(</span>
|
||||
<span class="s">"Connection to </span><span class="si">%s</span><span class="s"> is at the max number of requests"</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">request_id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_id_queue</span><span class="o">.</span><span class="n">get</span><span class="p">()</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_callbacks</span><span class="p">[</span><span class="n">request_id</span><span class="p">]</span> <span class="o">=</span> <span class="n">cb</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">push</span><span class="p">(</span><span class="n">msg</span><span class="o">.</span><span class="n">to_binary</span><span class="p">(</span><span class="n">request_id</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">protocol_version</span><span class="p">,</span> <span class="n">compression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">compressor</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="n">request_id</span>
|
||||
@@ -326,11 +379,14 @@
|
||||
<span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
|
||||
<span class="n">needed</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">msgs</span><span class="p">)</span> <span class="o">-</span> <span class="n">messages_sent</span>
|
||||
<span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">lock</span><span class="p">:</span>
|
||||
<span class="n">available</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">needed</span><span class="p">,</span> <span class="n">MAX_STREAM_PER_CONNECTION</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">in_flight</span><span class="p">)</span>
|
||||
<span class="n">available</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">needed</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_request_id</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">in_flight</span><span class="p">)</span>
|
||||
<span class="n">request_ids</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">get_request_id</span><span class="p">()</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">available</span><span class="p">)]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">in_flight</span> <span class="o">+=</span> <span class="n">available</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">messages_sent</span><span class="p">,</span> <span class="n">messages_sent</span> <span class="o">+</span> <span class="n">available</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">send_msg</span><span class="p">(</span><span class="n">msgs</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">partial</span><span class="p">(</span><span class="n">waiter</span><span class="o">.</span><span class="n">got_response</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="n">i</span><span class="p">),</span> <span class="n">wait_for_id</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">request_id</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">request_ids</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">send_msg</span><span class="p">(</span><span class="n">msgs</span><span class="p">[</span><span class="n">messages_sent</span> <span class="o">+</span> <span class="n">i</span><span class="p">],</span>
|
||||
<span class="n">request_id</span><span class="p">,</span>
|
||||
<span class="n">partial</span><span class="p">(</span><span class="n">waiter</span><span class="o">.</span><span class="n">got_response</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="n">messages_sent</span> <span class="o">+</span> <span class="n">i</span><span class="p">))</span>
|
||||
<span class="n">messages_sent</span> <span class="o">+=</span> <span class="n">available</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">messages_sent</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">msgs</span><span class="p">):</span>
|
||||
@@ -360,14 +416,48 @@
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">is_control_connection</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_push_watchers</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">process_io_buffer</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
|
||||
<span class="n">pos</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span><span class="o">.</span><span class="n">tell</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">pos</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">_full_header_length</span> <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_total_reqd_bytes</span> <span class="o">></span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">pos</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">_total_reqd_bytes</span><span class="p">):</span>
|
||||
<span class="c"># we don't have a complete header yet or we</span>
|
||||
<span class="c"># already saw a header, but we don't have a</span>
|
||||
<span class="c"># complete message yet</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c"># have enough for header, read body len from header</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_header_length</span><span class="p">)</span>
|
||||
<span class="n">body_len</span> <span class="o">=</span> <span class="n">int32_unpack</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))</span>
|
||||
|
||||
<span class="c"># seek to end to get length of current buffer</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">SEEK_END</span><span class="p">)</span>
|
||||
<span class="n">pos</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span><span class="o">.</span><span class="n">tell</span><span class="p">()</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">pos</span> <span class="o">>=</span> <span class="n">body_len</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">_full_header_length</span><span class="p">:</span>
|
||||
<span class="c"># read message header and body</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||||
<span class="n">msg</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_full_header_length</span> <span class="o">+</span> <span class="n">body_len</span><span class="p">)</span>
|
||||
|
||||
<span class="c"># leave leftover in current buffer</span>
|
||||
<span class="n">leftover</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span> <span class="o">=</span> <span class="n">io</span><span class="o">.</span><span class="n">BytesIO</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">leftover</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_total_reqd_bytes</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">process_msg</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">body_len</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_total_reqd_bytes</span> <span class="o">=</span> <span class="n">body_len</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">_full_header_length</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="nd">@defunct_on_error</span>
|
||||
<span class="k">def</span> <span class="nf">process_msg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="n">body_len</span><span class="p">):</span>
|
||||
<span class="n">version</span><span class="p">,</span> <span class="n">flags</span><span class="p">,</span> <span class="n">stream_id</span><span class="p">,</span> <span class="n">opcode</span> <span class="o">=</span> <span class="n">header_unpack</span><span class="p">(</span><span class="n">msg</span><span class="p">[:</span><span class="mi">4</span><span class="p">])</span>
|
||||
<span class="n">version</span><span class="p">,</span> <span class="n">flags</span><span class="p">,</span> <span class="n">stream_id</span><span class="p">,</span> <span class="n">opcode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_header_unpack</span><span class="p">(</span><span class="n">msg</span><span class="p">[:</span><span class="bp">self</span><span class="o">.</span><span class="n">_header_length</span><span class="p">])</span>
|
||||
<span class="k">if</span> <span class="n">stream_id</span> <span class="o"><</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="n">callback</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">callback</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_callbacks</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">stream_id</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_id_queue</span><span class="o">.</span><span class="n">put_nowait</span><span class="p">(</span><span class="n">stream_id</span><span class="p">)</span>
|
||||
<span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">lock</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">request_ids</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">stream_id</span><span class="p">)</span>
|
||||
|
||||
<span class="n">body</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
@@ -385,13 +475,14 @@
|
||||
<span class="o">%</span> <span class="p">(</span><span class="n">opcode</span><span class="p">,</span> <span class="n">stream_id</span><span class="p">))</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">body_len</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="n">body</span> <span class="o">=</span> <span class="n">msg</span><span class="p">[</span><span class="mi">8</span><span class="p">:]</span>
|
||||
<span class="n">body</span> <span class="o">=</span> <span class="n">msg</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_full_header_length</span><span class="p">:]</span>
|
||||
<span class="k">elif</span> <span class="n">body_len</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="n">body</span> <span class="o">=</span> <span class="n">six</span><span class="o">.</span><span class="n">binary_type</span><span class="p">()</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">ProtocolError</span><span class="p">(</span><span class="s">"Got negative body length: </span><span class="si">%r</span><span class="s">"</span> <span class="o">%</span> <span class="n">body_len</span><span class="p">)</span>
|
||||
|
||||
<span class="n">response</span> <span class="o">=</span> <span class="n">decode_response</span><span class="p">(</span><span class="n">stream_id</span><span class="p">,</span> <span class="n">flags</span><span class="p">,</span> <span class="n">opcode</span><span class="p">,</span> <span class="n">body</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">decompressor</span><span class="p">)</span>
|
||||
<span class="n">response</span> <span class="o">=</span> <span class="n">decode_response</span><span class="p">(</span><span class="n">given_version</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">user_type_map</span><span class="p">,</span> <span class="n">stream_id</span><span class="p">,</span>
|
||||
<span class="n">flags</span><span class="p">,</span> <span class="n">opcode</span><span class="p">,</span> <span class="n">body</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">decompressor</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">exc</span><span class="p">:</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">exception</span><span class="p">(</span><span class="s">"Error decoding response from Cassandra. "</span>
|
||||
<span class="s">"opcode: </span><span class="si">%04x</span><span class="s">; message contents: </span><span class="si">%r</span><span class="s">"</span><span class="p">,</span> <span class="n">opcode</span><span class="p">,</span> <span class="n">msg</span><span class="p">)</span>
|
||||
@@ -401,10 +492,14 @@
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">stream_id</span> <span class="o"><</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">stream_id</span> <span class="o">>=</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">response</span><span class="p">,</span> <span class="n">ProtocolException</span><span class="p">):</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s">"Closing connection </span><span class="si">%s</span><span class="s"> due to protocol error: </span><span class="si">%s</span><span class="s">"</span><span class="p">,</span> <span class="bp">self</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">summary_msg</span><span class="p">())</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">defunct</span><span class="p">(</span><span class="n">response</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">callback</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="n">callback</span><span class="p">(</span><span class="n">response</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">handle_pushed</span><span class="p">(</span><span class="n">response</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">callback</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="n">callback</span><span class="p">(</span><span class="n">response</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">exception</span><span class="p">(</span><span class="s">"Callback handler errored, ignoring:"</span><span class="p">)</span>
|
||||
|
||||
@@ -419,7 +514,7 @@
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_send_startup_message</span><span class="p">()</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"Sending initial options message for new connection (</span><span class="si">%s</span><span class="s">) to </span><span class="si">%s</span><span class="s">"</span><span class="p">,</span> <span class="nb">id</span><span class="p">(</span><span class="bp">self</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">send_msg</span><span class="p">(</span><span class="n">OptionsMessage</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">_handle_options_response</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">send_msg</span><span class="p">(</span><span class="n">OptionsMessage</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_request_id</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">_handle_options_response</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@defunct_on_error</span>
|
||||
<span class="k">def</span> <span class="nf">_handle_options_response</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">options_response</span><span class="p">):</span>
|
||||
@@ -430,10 +525,10 @@
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">options_response</span><span class="p">,</span> <span class="n">ConnectionException</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="n">options_response</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s">"Did not get expected SupportedMessage response; "</span> \
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s">"Did not get expected SupportedMessage response; "</span>
|
||||
<span class="s">"instead, got: </span><span class="si">%s</span><span class="s">"</span><span class="p">,</span> <span class="n">options_response</span><span class="p">)</span>
|
||||
<span class="k">raise</span> <span class="n">ConnectionException</span><span class="p">(</span><span class="s">"Did not get expected SupportedMessage "</span> \
|
||||
<span class="s">"response; instead, got: </span><span class="si">%s</span><span class="s">"</span> \
|
||||
<span class="k">raise</span> <span class="n">ConnectionException</span><span class="p">(</span><span class="s">"Did not get expected SupportedMessage "</span>
|
||||
<span class="s">"response; instead, got: </span><span class="si">%s</span><span class="s">"</span>
|
||||
<span class="o">%</span> <span class="p">(</span><span class="n">options_response</span><span class="p">,))</span>
|
||||
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"Received options response on new connection (</span><span class="si">%s</span><span class="s">) from </span><span class="si">%s</span><span class="s">"</span><span class="p">,</span>
|
||||
@@ -486,11 +581,13 @@
|
||||
|
||||
<span class="nd">@defunct_on_error</span>
|
||||
<span class="k">def</span> <span class="nf">_send_startup_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">compression</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"Sending StartupMessage on </span><span class="si">%s</span><span class="s">"</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
|
||||
<span class="n">opts</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="k">if</span> <span class="n">compression</span><span class="p">:</span>
|
||||
<span class="n">opts</span><span class="p">[</span><span class="s">'COMPRESSION'</span><span class="p">]</span> <span class="o">=</span> <span class="n">compression</span>
|
||||
<span class="n">sm</span> <span class="o">=</span> <span class="n">StartupMessage</span><span class="p">(</span><span class="n">cqlversion</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">cql_version</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="n">opts</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">send_msg</span><span class="p">(</span><span class="n">sm</span><span class="p">,</span> <span class="n">cb</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_handle_startup_response</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">send_msg</span><span class="p">(</span><span class="n">sm</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_request_id</span><span class="p">(),</span> <span class="n">cb</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_handle_startup_response</span><span class="p">)</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"Sent StartupMessage on </span><span class="si">%s</span><span class="s">"</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@defunct_on_error</span>
|
||||
<span class="k">def</span> <span class="nf">_handle_startup_response</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">startup_response</span><span class="p">,</span> <span class="n">did_authenticate</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
|
||||
@@ -514,12 +611,12 @@
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"Sending credentials-based auth response on </span><span class="si">%s</span><span class="s">"</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
|
||||
<span class="n">cm</span> <span class="o">=</span> <span class="n">CredentialsMessage</span><span class="p">(</span><span class="n">creds</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">authenticator</span><span class="p">)</span>
|
||||
<span class="n">callback</span> <span class="o">=</span> <span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_handle_startup_response</span><span class="p">,</span> <span class="n">did_authenticate</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">send_msg</span><span class="p">(</span><span class="n">cm</span><span class="p">,</span> <span class="n">cb</span><span class="o">=</span><span class="n">callback</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">send_msg</span><span class="p">(</span><span class="n">cm</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_request_id</span><span class="p">(),</span> <span class="n">cb</span><span class="o">=</span><span class="n">callback</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"Sending SASL-based auth response on </span><span class="si">%s</span><span class="s">"</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
|
||||
<span class="n">initial_response</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">authenticator</span><span class="o">.</span><span class="n">initial_response</span><span class="p">()</span>
|
||||
<span class="n">initial_response</span> <span class="o">=</span> <span class="s">""</span> <span class="k">if</span> <span class="n">initial_response</span> <span class="ow">is</span> <span class="bp">None</span> <span class="k">else</span> <span class="n">initial_response</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s">'utf-8'</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">send_msg</span><span class="p">(</span><span class="n">AuthResponseMessage</span><span class="p">(</span><span class="n">initial_response</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">_handle_auth_response</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">send_msg</span><span class="p">(</span><span class="n">AuthResponseMessage</span><span class="p">(</span><span class="n">initial_response</span><span class="p">),</span> <span class="mi">0</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_handle_auth_response</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">startup_response</span><span class="p">,</span> <span class="n">ErrorMessage</span><span class="p">):</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"Received ErrorMessage on new connection (</span><span class="si">%s</span><span class="s">) from </span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">"</span><span class="p">,</span>
|
||||
<span class="nb">id</span><span class="p">(</span><span class="bp">self</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">,</span> <span class="n">startup_response</span><span class="o">.</span><span class="n">summary_msg</span><span class="p">())</span>
|
||||
@@ -554,7 +651,7 @@
|
||||
<span class="n">response</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">authenticator</span><span class="o">.</span><span class="n">evaluate_challenge</span><span class="p">(</span><span class="n">auth_response</span><span class="o">.</span><span class="n">challenge</span><span class="p">)</span>
|
||||
<span class="n">msg</span> <span class="o">=</span> <span class="n">AuthResponseMessage</span><span class="p">(</span><span class="s">""</span> <span class="k">if</span> <span class="n">response</span> <span class="ow">is</span> <span class="bp">None</span> <span class="k">else</span> <span class="n">response</span><span class="p">)</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"Responding to auth challenge on </span><span class="si">%s</span><span class="s">"</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">send_msg</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_handle_auth_response</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">send_msg</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_request_id</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">_handle_auth_response</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">auth_response</span><span class="p">,</span> <span class="n">ErrorMessage</span><span class="p">):</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"Received ErrorMessage on new connection (</span><span class="si">%s</span><span class="s">) from </span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">"</span><span class="p">,</span>
|
||||
<span class="nb">id</span><span class="p">(</span><span class="bp">self</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">,</span> <span class="n">auth_response</span><span class="o">.</span><span class="n">summary_msg</span><span class="p">())</span>
|
||||
@@ -618,7 +715,21 @@
|
||||
<span class="n">callback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">defunct</span><span class="p">(</span><span class="n">ConnectionException</span><span class="p">(</span>
|
||||
<span class="s">"Problem while setting keyspace: </span><span class="si">%r</span><span class="s">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">result</span><span class="p">,),</span> <span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">)))</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">send_msg</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> <span class="n">process_result</span><span class="p">,</span> <span class="n">wait_for_id</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="n">request_id</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="c"># we use a busy wait on the lock here because:</span>
|
||||
<span class="c"># - we'll only spin if the connection is at max capacity, which is very</span>
|
||||
<span class="c"># unlikely for a set_keyspace call</span>
|
||||
<span class="c"># - it allows us to avoid signaling a condition every time a request completes</span>
|
||||
<span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
|
||||
<span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">lock</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">in_flight</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_request_id</span><span class="p">:</span>
|
||||
<span class="n">request_id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_request_id</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">in_flight</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
<span class="k">break</span>
|
||||
|
||||
<span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">0.001</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">send_msg</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> <span class="n">request_id</span><span class="p">,</span> <span class="n">process_result</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">status</span> <span class="o">=</span> <span class="s">""</span>
|
||||
@@ -676,7 +787,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" >Module code</a> »</li>
|
||||
<li><a href="../cassandra.html" >cassandra</a> »</li>
|
||||
</ul>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>cassandra.decoder — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>cassandra.decoder — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../../_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="../../index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="../../index.html" />
|
||||
<link rel="up" title="cassandra" href="../cassandra.html" />
|
||||
</head>
|
||||
<body>
|
||||
@@ -36,7 +36,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" >Module code</a> »</li>
|
||||
<li><a href="../cassandra.html" accesskey="U">cassandra</a> »</li>
|
||||
</ul>
|
||||
@@ -139,7 +139,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" >Module code</a> »</li>
|
||||
<li><a href="../cassandra.html" >cassandra</a> »</li>
|
||||
</ul>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>cassandra.io.asyncorereactor — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>cassandra.io.asyncorereactor — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../../../_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../../',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="../../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../../_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="../../../index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="../../../index.html" />
|
||||
<link rel="up" title="cassandra" href="../../cassandra.html" />
|
||||
</head>
|
||||
<body>
|
||||
@@ -36,7 +36,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../../index.html" >Module code</a> »</li>
|
||||
<li><a href="../../cassandra.html" accesskey="U">cassandra</a> »</li>
|
||||
</ul>
|
||||
@@ -78,7 +78,6 @@
|
||||
<span class="c"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
|
||||
<span class="c"># See the License for the specific language governing permissions and</span>
|
||||
<span class="c"># limitations under the License.</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">atexit</span>
|
||||
<span class="kn">from</span> <span class="nn">collections</span> <span class="kn">import</span> <span class="n">deque</span>
|
||||
<span class="kn">from</span> <span class="nn">functools</span> <span class="kn">import</span> <span class="n">partial</span>
|
||||
@@ -89,7 +88,6 @@
|
||||
<span class="kn">from</span> <span class="nn">threading</span> <span class="kn">import</span> <span class="n">Event</span><span class="p">,</span> <span class="n">Lock</span><span class="p">,</span> <span class="n">Thread</span>
|
||||
<span class="kn">import</span> <span class="nn">weakref</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">six</span> <span class="kn">import</span> <span class="n">BytesIO</span>
|
||||
<span class="kn">from</span> <span class="nn">six.moves</span> <span class="kn">import</span> <span class="nb">range</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">errno</span> <span class="kn">import</span> <span class="n">EALREADY</span><span class="p">,</span> <span class="n">EINPROGRESS</span><span class="p">,</span> <span class="n">EWOULDBLOCK</span><span class="p">,</span> <span class="n">EINVAL</span><span class="p">,</span> <span class="n">EISCONN</span><span class="p">,</span> <span class="n">errorcode</span>
|
||||
@@ -109,7 +107,6 @@
|
||||
<span class="kn">from</span> <span class="nn">cassandra.connection</span> <span class="kn">import</span> <span class="p">(</span><span class="n">Connection</span><span class="p">,</span> <span class="n">ConnectionShutdown</span><span class="p">,</span>
|
||||
<span class="n">ConnectionException</span><span class="p">,</span> <span class="n">NONBLOCKING</span><span class="p">)</span>
|
||||
<span class="kn">from</span> <span class="nn">cassandra.protocol</span> <span class="kn">import</span> <span class="n">RegisterMessage</span>
|
||||
<span class="kn">from</span> <span class="nn">cassandra.marshal</span> <span class="kn">import</span> <span class="n">int32_unpack</span>
|
||||
|
||||
<span class="n">log</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="n">__name__</span><span class="p">)</span>
|
||||
|
||||
@@ -126,6 +123,7 @@
|
||||
<span class="k">class</span> <span class="nc">AsyncoreLoop</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_pid</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getpid</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_loop_lock</span> <span class="o">=</span> <span class="n">Lock</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_started</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_shutdown</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
@@ -212,6 +210,18 @@
|
||||
<span class="k">def</span> <span class="nf">initialize_reactor</span><span class="p">(</span><span class="n">cls</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">cls</span><span class="o">.</span><span class="n">_loop</span><span class="p">:</span>
|
||||
<span class="n">cls</span><span class="o">.</span><span class="n">_loop</span> <span class="o">=</span> <span class="n">AsyncoreLoop</span><span class="p">()</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">current_pid</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getpid</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">cls</span><span class="o">.</span><span class="n">_loop</span><span class="o">.</span><span class="n">_pid</span> <span class="o">!=</span> <span class="n">current_pid</span><span class="p">:</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"Detected fork, clearing and reinitializing reactor state"</span><span class="p">)</span>
|
||||
<span class="n">cls</span><span class="o">.</span><span class="n">handle_fork</span><span class="p">()</span>
|
||||
<span class="n">cls</span><span class="o">.</span><span class="n">_loop</span> <span class="o">=</span> <span class="n">AsyncoreLoop</span><span class="p">()</span>
|
||||
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">handle_fork</span><span class="p">(</span><span class="n">cls</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">cls</span><span class="o">.</span><span class="n">_loop</span><span class="p">:</span>
|
||||
<span class="n">cls</span><span class="o">.</span><span class="n">_loop</span><span class="o">.</span><span class="n">_cleanup</span><span class="p">()</span>
|
||||
<span class="n">cls</span><span class="o">.</span><span class="n">_loop</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">factory</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
@@ -231,7 +241,6 @@
|
||||
<span class="n">asyncore</span><span class="o">.</span><span class="n">dispatcher</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">connected_event</span> <span class="o">=</span> <span class="n">Event</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span> <span class="o">=</span> <span class="n">BytesIO</span><span class="p">()</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_callbacks</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">deque</span> <span class="o">=</span> <span class="n">deque</span><span class="p">()</span>
|
||||
@@ -279,7 +288,7 @@
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">socket</span><span class="o">.</span><span class="n">settimeout</span><span class="p">(</span><span class="mf">1.0</span><span class="p">)</span>
|
||||
<span class="n">err</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">socket</span><span class="o">.</span><span class="n">connect_ex</span><span class="p">(</span><span class="n">address</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">err</span> <span class="ow">in</span> <span class="p">(</span><span class="n">EINPROGRESS</span><span class="p">,</span> <span class="n">EALREADY</span><span class="p">,</span> <span class="n">EWOULDBLOCK</span><span class="p">)</span> \
|
||||
<span class="ow">or</span> <span class="n">err</span> <span class="o">==</span> <span class="n">EINVAL</span> <span class="ow">and</span> <span class="n">os</span><span class="o">.</span><span class="n">name</span> <span class="ow">in</span> <span class="p">(</span><span class="s">'nt'</span><span class="p">,</span> <span class="s">'ce'</span><span class="p">):</span>
|
||||
<span class="ow">or</span> <span class="n">err</span> <span class="o">==</span> <span class="n">EINVAL</span> <span class="ow">and</span> <span class="n">os</span><span class="o">.</span><span class="n">name</span> <span class="ow">in</span> <span class="p">(</span><span class="s">'nt'</span><span class="p">,</span> <span class="s">'ce'</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="n">ConnectionException</span><span class="p">(</span><span class="s">"Timed out connecting to </span><span class="si">%s</span><span class="s">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">address</span><span class="p">[</span><span class="mi">0</span><span class="p">]))</span>
|
||||
<span class="k">if</span> <span class="n">err</span> <span class="ow">in</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">EISCONN</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">addr</span> <span class="o">=</span> <span class="n">address</span>
|
||||
@@ -315,17 +324,17 @@
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">defunct</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">exc_info</span><span class="p">()[</span><span class="mi">1</span><span class="p">])</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">handle_close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"connection (</span><span class="si">%s</span><span class="s">) to </span><span class="si">%s</span><span class="s"> closed by server"</span><span class="p">,</span> <span class="nb">id</span><span class="p">(</span><span class="bp">self</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">)</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"Connection </span><span class="si">%s</span><span class="s"> closed by server"</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">handle_write</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">deque_lock</span><span class="p">:</span>
|
||||
<span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">deque_lock</span><span class="p">:</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">next_msg</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">deque</span><span class="o">.</span><span class="n">popleft</span><span class="p">()</span>
|
||||
<span class="k">except</span> <span class="ne">IndexError</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_writable</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">except</span> <span class="ne">IndexError</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_writable</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">sent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">next_msg</span><span class="p">)</span>
|
||||
@@ -361,38 +370,7 @@
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span><span class="o">.</span><span class="n">tell</span><span class="p">():</span>
|
||||
<span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
|
||||
<span class="n">pos</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span><span class="o">.</span><span class="n">tell</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">pos</span> <span class="o"><</span> <span class="mi">8</span> <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_total_reqd_bytes</span> <span class="o">></span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">pos</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">_total_reqd_bytes</span><span class="p">):</span>
|
||||
<span class="c"># we don't have a complete header yet or we</span>
|
||||
<span class="c"># already saw a header, but we don't have a</span>
|
||||
<span class="c"># complete message yet</span>
|
||||
<span class="k">break</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c"># have enough for header, read body len from header</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
|
||||
<span class="n">body_len</span> <span class="o">=</span> <span class="n">int32_unpack</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))</span>
|
||||
|
||||
<span class="c"># seek to end to get length of current buffer</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">SEEK_END</span><span class="p">)</span>
|
||||
<span class="n">pos</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span><span class="o">.</span><span class="n">tell</span><span class="p">()</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">pos</span> <span class="o">>=</span> <span class="n">body_len</span> <span class="o">+</span> <span class="mi">8</span><span class="p">:</span>
|
||||
<span class="c"># read message header and body</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||||
<span class="n">msg</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">8</span> <span class="o">+</span> <span class="n">body_len</span><span class="p">)</span>
|
||||
|
||||
<span class="c"># leave leftover in current buffer</span>
|
||||
<span class="n">leftover</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span> <span class="o">=</span> <span class="n">BytesIO</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">leftover</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_total_reqd_bytes</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">process_msg</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">body_len</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_total_reqd_bytes</span> <span class="o">=</span> <span class="n">body_len</span> <span class="o">+</span> <span class="mi">8</span>
|
||||
<span class="k">break</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">process_io_buffer</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_callbacks</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_control_connection</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_readable</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
|
||||
@@ -407,8 +385,7 @@
|
||||
|
||||
<span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">deque_lock</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">deque</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">chunks</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_writable</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_writable</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">writable</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_writable</span>
|
||||
@@ -442,7 +419,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../../index.html" >Module code</a> »</li>
|
||||
<li><a href="../../cassandra.html" >cassandra</a> »</li>
|
||||
</ul>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>cassandra.io.libevreactor — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>cassandra.io.libevreactor — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../../../_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../../',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="../../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../../_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="../../../index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="../../../index.html" />
|
||||
<link rel="up" title="cassandra" href="../../cassandra.html" />
|
||||
</head>
|
||||
<body>
|
||||
@@ -36,7 +36,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../../index.html" >Module code</a> »</li>
|
||||
<li><a href="../../cassandra.html" accesskey="U">cassandra</a> »</li>
|
||||
</ul>
|
||||
@@ -78,7 +78,6 @@
|
||||
<span class="c"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
|
||||
<span class="c"># See the License for the specific language governing permissions and</span>
|
||||
<span class="c"># limitations under the License.</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">atexit</span>
|
||||
<span class="kn">from</span> <span class="nn">collections</span> <span class="kn">import</span> <span class="n">deque</span>
|
||||
<span class="kn">from</span> <span class="nn">functools</span> <span class="kn">import</span> <span class="n">partial</span>
|
||||
@@ -88,12 +87,11 @@
|
||||
<span class="kn">from</span> <span class="nn">threading</span> <span class="kn">import</span> <span class="n">Event</span><span class="p">,</span> <span class="n">Lock</span><span class="p">,</span> <span class="n">Thread</span>
|
||||
<span class="kn">import</span> <span class="nn">weakref</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">six</span> <span class="kn">import</span> <span class="n">BytesIO</span>
|
||||
<span class="kn">from</span> <span class="nn">six.moves</span> <span class="kn">import</span> <span class="nb">xrange</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">cassandra</span> <span class="kn">import</span> <span class="n">OperationTimedOut</span>
|
||||
<span class="kn">from</span> <span class="nn">cassandra.connection</span> <span class="kn">import</span> <span class="n">Connection</span><span class="p">,</span> <span class="n">ConnectionShutdown</span><span class="p">,</span> <span class="n">NONBLOCKING</span>
|
||||
<span class="kn">from</span> <span class="nn">cassandra.protocol</span> <span class="kn">import</span> <span class="n">RegisterMessage</span>
|
||||
<span class="kn">from</span> <span class="nn">cassandra.marshal</span> <span class="kn">import</span> <span class="n">int32_unpack</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="kn">import</span> <span class="nn">cassandra.io.libevwrapper</span> <span class="kn">as</span> <span class="nn">libev</span>
|
||||
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
|
||||
@@ -126,6 +124,7 @@
|
||||
<span class="k">class</span> <span class="nc">LibevLoop</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_pid</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getpid</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_loop</span> <span class="o">=</span> <span class="n">libev</span><span class="o">.</span><span class="n">Loop</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_notifier</span> <span class="o">=</span> <span class="n">libev</span><span class="o">.</span><span class="n">Async</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_loop</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_notifier</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
|
||||
@@ -192,6 +191,15 @@
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_thread</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">conn</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_live_conns</span> <span class="o">|</span> <span class="bp">self</span><span class="o">.</span><span class="n">_new_conns</span> <span class="o">|</span> <span class="bp">self</span><span class="o">.</span><span class="n">_closed_conns</span><span class="p">:</span>
|
||||
<span class="n">conn</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">conn</span><span class="o">.</span><span class="n">_write_watcher</span><span class="p">:</span>
|
||||
<span class="n">conn</span><span class="o">.</span><span class="n">_write_watcher</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span>
|
||||
<span class="k">del</span> <span class="n">conn</span><span class="o">.</span><span class="n">_write_watcher</span>
|
||||
<span class="k">if</span> <span class="n">conn</span><span class="o">.</span><span class="n">_read_watcher</span><span class="p">:</span>
|
||||
<span class="n">conn</span><span class="o">.</span><span class="n">_read_watcher</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span>
|
||||
<span class="k">del</span> <span class="n">conn</span><span class="o">.</span><span class="n">_read_watcher</span>
|
||||
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"Waiting for event loop thread to join..."</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_thread</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="mf">1.0</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_thread</span><span class="o">.</span><span class="n">is_alive</span><span class="p">():</span>
|
||||
@@ -200,6 +208,7 @@
|
||||
<span class="s">"Please call Cluster.shutdown() to avoid this."</span><span class="p">)</span>
|
||||
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"Event loop thread was joined"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_loop</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">connection_created</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">conn</span><span class="p">):</span>
|
||||
<span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">_conn_set_lock</span><span class="p">:</span>
|
||||
@@ -282,6 +291,17 @@
|
||||
<span class="k">def</span> <span class="nf">initialize_reactor</span><span class="p">(</span><span class="n">cls</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">cls</span><span class="o">.</span><span class="n">_libevloop</span><span class="p">:</span>
|
||||
<span class="n">cls</span><span class="o">.</span><span class="n">_libevloop</span> <span class="o">=</span> <span class="n">LibevLoop</span><span class="p">()</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">cls</span><span class="o">.</span><span class="n">_libevloop</span><span class="o">.</span><span class="n">_pid</span> <span class="o">!=</span> <span class="n">os</span><span class="o">.</span><span class="n">getpid</span><span class="p">():</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"Detected fork, clearing and reinitializing reactor state"</span><span class="p">)</span>
|
||||
<span class="n">cls</span><span class="o">.</span><span class="n">handle_fork</span><span class="p">()</span>
|
||||
<span class="n">cls</span><span class="o">.</span><span class="n">_libevloop</span> <span class="o">=</span> <span class="n">LibevLoop</span><span class="p">()</span>
|
||||
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">handle_fork</span><span class="p">(</span><span class="n">cls</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">cls</span><span class="o">.</span><span class="n">_libevloop</span><span class="p">:</span>
|
||||
<span class="n">cls</span><span class="o">.</span><span class="n">_libevloop</span><span class="o">.</span><span class="n">_cleanup</span><span class="p">()</span>
|
||||
<span class="n">cls</span><span class="o">.</span><span class="n">_libevloop</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">factory</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
@@ -300,7 +320,6 @@
|
||||
<span class="n">Connection</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">connected_event</span> <span class="o">=</span> <span class="n">Event</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span> <span class="o">=</span> <span class="n">BytesIO</span><span class="p">()</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_callbacks</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">deque</span> <span class="o">=</span> <span class="n">deque</span><span class="p">()</span>
|
||||
@@ -402,37 +421,7 @@
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span><span class="o">.</span><span class="n">tell</span><span class="p">():</span>
|
||||
<span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
|
||||
<span class="n">pos</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span><span class="o">.</span><span class="n">tell</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">pos</span> <span class="o"><</span> <span class="mi">8</span> <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_total_reqd_bytes</span> <span class="o">></span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">pos</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">_total_reqd_bytes</span><span class="p">):</span>
|
||||
<span class="c"># we don't have a complete header yet or we</span>
|
||||
<span class="c"># already saw a header, but we don't have a</span>
|
||||
<span class="c"># complete message yet</span>
|
||||
<span class="k">break</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c"># have enough for header, read body len from header</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
|
||||
<span class="n">body_len</span> <span class="o">=</span> <span class="n">int32_unpack</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))</span>
|
||||
|
||||
<span class="c"># seek to end to get length of current buffer</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">SEEK_END</span><span class="p">)</span>
|
||||
<span class="n">pos</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span><span class="o">.</span><span class="n">tell</span><span class="p">()</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">pos</span> <span class="o">>=</span> <span class="n">body_len</span> <span class="o">+</span> <span class="mi">8</span><span class="p">:</span>
|
||||
<span class="c"># read message header and body</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||||
<span class="n">msg</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">8</span> <span class="o">+</span> <span class="n">body_len</span><span class="p">)</span>
|
||||
|
||||
<span class="c"># leave leftover in current buffer</span>
|
||||
<span class="n">leftover</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span> <span class="o">=</span> <span class="n">BytesIO</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_iobuf</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">leftover</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_total_reqd_bytes</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">process_msg</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">body_len</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_total_reqd_bytes</span> <span class="o">=</span> <span class="n">body_len</span> <span class="o">+</span> <span class="mi">8</span>
|
||||
<span class="k">break</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">process_io_buffer</span><span class="p">()</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"Connection </span><span class="si">%s</span><span class="s"> closed by server"</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
||||
@@ -476,7 +465,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../../index.html" >Module code</a> »</li>
|
||||
<li><a href="../../cassandra.html" >cassandra</a> »</li>
|
||||
</ul>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>cassandra.metadata — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>cassandra.metadata — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../../_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="../../index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="../../index.html" />
|
||||
<link rel="up" title="cassandra" href="../cassandra.html" />
|
||||
</head>
|
||||
<body>
|
||||
@@ -36,7 +36,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" >Module code</a> »</li>
|
||||
<li><a href="../cassandra.html" accesskey="U">cassandra</a> »</li>
|
||||
</ul>
|
||||
@@ -155,7 +155,7 @@
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="s">"</span><span class="se">\n</span><span class="s">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">ks</span><span class="o">.</span><span class="n">export_as_string</span><span class="p">()</span> <span class="k">for</span> <span class="n">ks</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">keyspaces</span><span class="o">.</span><span class="n">values</span><span class="p">())</span>
|
||||
</div>
|
||||
<span class="k">def</span> <span class="nf">rebuild_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ks_results</span><span class="p">,</span> <span class="n">cf_results</span><span class="p">,</span> <span class="n">col_results</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">rebuild_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ks_results</span><span class="p">,</span> <span class="n">type_results</span><span class="p">,</span> <span class="n">cf_results</span><span class="p">,</span> <span class="n">col_results</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Rebuild the view of the current schema from a fresh set of rows from</span>
|
||||
<span class="sd"> the system schema tables.</span>
|
||||
@@ -164,6 +164,7 @@
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">cf_def_rows</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">list</span><span class="p">)</span>
|
||||
<span class="n">col_def_rows</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">list</span><span class="p">))</span>
|
||||
<span class="n">usertype_rows</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">list</span><span class="p">)</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">cf_results</span><span class="p">:</span>
|
||||
<span class="n">cf_def_rows</span><span class="p">[</span><span class="n">row</span><span class="p">[</span><span class="s">"keyspace_name"</span><span class="p">]]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">row</span><span class="p">)</span>
|
||||
@@ -173,6 +174,9 @@
|
||||
<span class="n">cfname</span> <span class="o">=</span> <span class="n">row</span><span class="p">[</span><span class="s">"columnfamily_name"</span><span class="p">]</span>
|
||||
<span class="n">col_def_rows</span><span class="p">[</span><span class="n">ksname</span><span class="p">][</span><span class="n">cfname</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">row</span><span class="p">)</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">type_results</span><span class="p">:</span>
|
||||
<span class="n">usertype_rows</span><span class="p">[</span><span class="n">row</span><span class="p">[</span><span class="s">"keyspace_name"</span><span class="p">]]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">row</span><span class="p">)</span>
|
||||
|
||||
<span class="n">current_keyspaces</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span>
|
||||
<span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">ks_results</span><span class="p">:</span>
|
||||
<span class="n">keyspace_meta</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_build_keyspace_metadata</span><span class="p">(</span><span class="n">row</span><span class="p">)</span>
|
||||
@@ -181,6 +185,10 @@
|
||||
<span class="n">keyspace_meta</span><span class="p">,</span> <span class="n">table_row</span><span class="p">,</span> <span class="n">col_def_rows</span><span class="p">[</span><span class="n">keyspace_meta</span><span class="o">.</span><span class="n">name</span><span class="p">])</span>
|
||||
<span class="n">keyspace_meta</span><span class="o">.</span><span class="n">tables</span><span class="p">[</span><span class="n">table_meta</span><span class="o">.</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">table_meta</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">usertype_row</span> <span class="ow">in</span> <span class="n">usertype_rows</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">keyspace_meta</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="p">[]):</span>
|
||||
<span class="n">usertype</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_build_usertype</span><span class="p">(</span><span class="n">keyspace_meta</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">usertype_row</span><span class="p">)</span>
|
||||
<span class="n">keyspace_meta</span><span class="o">.</span><span class="n">user_types</span><span class="p">[</span><span class="n">usertype</span><span class="o">.</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">usertype</span>
|
||||
|
||||
<span class="n">current_keyspaces</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">keyspace_meta</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="n">old_keyspace_meta</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">keyspaces</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">keyspace_meta</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">keyspaces</span><span class="p">[</span><span class="n">keyspace_meta</span><span class="o">.</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">keyspace_meta</span>
|
||||
@@ -197,36 +205,31 @@
|
||||
<span class="k">for</span> <span class="n">ksname</span> <span class="ow">in</span> <span class="n">removed_keyspaces</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_keyspace_removed</span><span class="p">(</span><span class="n">ksname</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">keyspace_changed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">ks_results</span><span class="p">,</span> <span class="n">cf_results</span><span class="p">,</span> <span class="n">col_results</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">keyspace_changed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">ks_results</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">ks_results</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">keyspace</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">keyspaces</span><span class="p">:</span>
|
||||
<span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">keyspaces</span><span class="p">[</span><span class="n">keyspace</span><span class="p">]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_keyspace_removed</span><span class="p">(</span><span class="n">keyspace</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="n">col_def_rows</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">list</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">col_results</span><span class="p">:</span>
|
||||
<span class="n">cfname</span> <span class="o">=</span> <span class="n">row</span><span class="p">[</span><span class="s">"columnfamily_name"</span><span class="p">]</span>
|
||||
<span class="n">col_def_rows</span><span class="p">[</span><span class="n">cfname</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">row</span><span class="p">)</span>
|
||||
|
||||
<span class="n">keyspace_meta</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_build_keyspace_metadata</span><span class="p">(</span><span class="n">ks_results</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
<span class="n">old_keyspace_meta</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">keyspaces</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">keyspace</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
|
||||
|
||||
<span class="n">new_table_metas</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="k">for</span> <span class="n">table_row</span> <span class="ow">in</span> <span class="n">cf_results</span><span class="p">:</span>
|
||||
<span class="n">table_meta</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_build_table_metadata</span><span class="p">(</span>
|
||||
<span class="n">keyspace_meta</span><span class="p">,</span> <span class="n">table_row</span><span class="p">,</span> <span class="n">col_def_rows</span><span class="p">)</span>
|
||||
<span class="n">new_table_metas</span><span class="p">[</span><span class="n">table_meta</span><span class="o">.</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">table_meta</span>
|
||||
|
||||
<span class="n">keyspace_meta</span><span class="o">.</span><span class="n">tables</span> <span class="o">=</span> <span class="n">new_table_metas</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">keyspaces</span><span class="p">[</span><span class="n">keyspace</span><span class="p">]</span> <span class="o">=</span> <span class="n">keyspace_meta</span>
|
||||
<span class="k">if</span> <span class="n">old_keyspace_meta</span><span class="p">:</span>
|
||||
<span class="n">keyspace_meta</span><span class="o">.</span><span class="n">user_types</span> <span class="o">=</span> <span class="n">old_keyspace_meta</span><span class="o">.</span><span class="n">user_types</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">keyspace_meta</span><span class="o">.</span><span class="n">replication_strategy</span> <span class="o">!=</span> <span class="n">old_keyspace_meta</span><span class="o">.</span><span class="n">replication_strategy</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_keyspace_updated</span><span class="p">(</span><span class="n">keyspace</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_keyspace_added</span><span class="p">(</span><span class="n">keyspace</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">usertype_changed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">type_results</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">type_results</span><span class="p">:</span>
|
||||
<span class="n">new_usertype</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_build_usertype</span><span class="p">(</span><span class="n">keyspace</span><span class="p">,</span> <span class="n">type_results</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">keyspaces</span><span class="p">[</span><span class="n">keyspace</span><span class="p">]</span><span class="o">.</span><span class="n">user_types</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">new_usertype</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c"># the type was deleted</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">keyspaces</span><span class="p">[</span><span class="n">keyspace</span><span class="p">]</span><span class="o">.</span><span class="n">user_types</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">table_changed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">table</span><span class="p">,</span> <span class="n">cf_results</span><span class="p">,</span> <span class="n">col_results</span><span class="p">):</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">keyspace_meta</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">keyspaces</span><span class="p">[</span><span class="n">keyspace</span><span class="p">]</span>
|
||||
@@ -242,7 +245,7 @@
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">cf_results</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span>
|
||||
<span class="n">keyspace_meta</span><span class="o">.</span><span class="n">tables</span><span class="p">[</span><span class="n">table</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_build_table_metadata</span><span class="p">(</span>
|
||||
<span class="n">keyspace_meta</span><span class="p">,</span> <span class="n">cf_results</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="p">{</span><span class="n">table</span><span class="p">:</span> <span class="n">col_results</span><span class="p">})</span>
|
||||
<span class="n">keyspace_meta</span><span class="p">,</span> <span class="n">cf_results</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="p">{</span><span class="n">table</span><span class="p">:</span> <span class="n">col_results</span><span class="p">})</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_keyspace_added</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ksname</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">token_map</span><span class="p">:</span>
|
||||
@@ -263,6 +266,11 @@
|
||||
<span class="n">strategy_options</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">row</span><span class="p">[</span><span class="s">"strategy_options"</span><span class="p">])</span>
|
||||
<span class="k">return</span> <span class="n">KeyspaceMetadata</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">durable_writes</span><span class="p">,</span> <span class="n">strategy_class</span><span class="p">,</span> <span class="n">strategy_options</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_build_usertype</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">usertype_row</span><span class="p">):</span>
|
||||
<span class="n">type_classes</span> <span class="o">=</span> <span class="nb">map</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">lookup_casstype</span><span class="p">,</span> <span class="n">usertype_row</span><span class="p">[</span><span class="s">'field_types'</span><span class="p">])</span>
|
||||
<span class="k">return</span> <span class="n">UserType</span><span class="p">(</span><span class="n">usertype_row</span><span class="p">[</span><span class="s">'keyspace_name'</span><span class="p">],</span> <span class="n">usertype_row</span><span class="p">[</span><span class="s">'type_name'</span><span class="p">],</span>
|
||||
<span class="n">usertype_row</span><span class="p">[</span><span class="s">'field_names'</span><span class="p">],</span> <span class="n">type_classes</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_build_table_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">keyspace_metadata</span><span class="p">,</span> <span class="n">row</span><span class="p">,</span> <span class="n">col_rows</span><span class="p">):</span>
|
||||
<span class="n">cfname</span> <span class="o">=</span> <span class="n">row</span><span class="p">[</span><span class="s">"columnfamily_name"</span><span class="p">]</span>
|
||||
|
||||
@@ -360,6 +368,16 @@
|
||||
<span class="k">def</span> <span class="nf">_build_table_options</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">row</span><span class="p">):</span>
|
||||
<span class="sd">""" Setup the mostly-non-schema table options, like caching settings """</span>
|
||||
<span class="n">options</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">((</span><span class="n">o</span><span class="p">,</span> <span class="n">row</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">o</span><span class="p">))</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">TableMetadata</span><span class="o">.</span><span class="n">recognized_options</span> <span class="k">if</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">row</span><span class="p">)</span>
|
||||
|
||||
<span class="c"># the option name when creating tables is "dclocal_read_repair_chance",</span>
|
||||
<span class="c"># but the column name in system.schema_columnfamilies is</span>
|
||||
<span class="c"># "local_read_repair_chance". We'll store this as dclocal_read_repair_chance,</span>
|
||||
<span class="c"># since that's probably what users are expecting (and we need it for the</span>
|
||||
<span class="c"># CREATE TABLE statement anyway).</span>
|
||||
<span class="k">if</span> <span class="s">"local_read_repair_chance"</span> <span class="ow">in</span> <span class="n">options</span><span class="p">:</span>
|
||||
<span class="n">val</span> <span class="o">=</span> <span class="n">options</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s">"local_read_repair_chance"</span><span class="p">)</span>
|
||||
<span class="n">options</span><span class="p">[</span><span class="s">"dclocal_read_repair_chance"</span><span class="p">]</span> <span class="o">=</span> <span class="n">val</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">options</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_build_column_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">table_metadata</span><span class="p">,</span> <span class="n">row</span><span class="p">):</span>
|
||||
@@ -406,7 +424,7 @@
|
||||
|
||||
<span class="n">all_tokens</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">ring</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">token_map</span> <span class="o">=</span> <span class="n">TokenMap</span><span class="p">(</span>
|
||||
<span class="n">token_class</span><span class="p">,</span> <span class="n">token_to_host_owner</span><span class="p">,</span> <span class="n">all_tokens</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
|
||||
<span class="n">token_class</span><span class="p">,</span> <span class="n">token_to_host_owner</span><span class="p">,</span> <span class="n">all_tokens</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="Metadata.get_replicas"><a class="viewcode-back" href="../../api/cassandra/metadata.html#cassandra.metadata.Metadata.get_replicas">[docs]</a> <span class="k">def</span> <span class="nf">get_replicas</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
@@ -528,7 +546,7 @@
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dc_replication_factors</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">dc_replication_factors</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span>
|
||||
<span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">k</span><span class="p">),</span> <span class="nb">int</span><span class="p">(</span><span class="n">v</span><span class="p">))</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">dc_replication_factors</span><span class="o">.</span><span class="n">items</span><span class="p">())</span>
|
||||
<span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">k</span><span class="p">),</span> <span class="nb">int</span><span class="p">(</span><span class="n">v</span><span class="p">))</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">dc_replication_factors</span><span class="o">.</span><span class="n">items</span><span class="p">())</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">make_token_replica_map</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token_to_host_owner</span><span class="p">,</span> <span class="n">ring</span><span class="p">):</span>
|
||||
<span class="c"># note: this does not account for hosts having different racks</span>
|
||||
@@ -636,11 +654,14 @@
|
||||
<span class="sd"> A map from table names to instances of :class:`~.TableMetadata`.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">user_types</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">durable_writes</span><span class="p">,</span> <span class="n">strategy_class</span><span class="p">,</span> <span class="n">strategy_options</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">durable_writes</span> <span class="o">=</span> <span class="n">durable_writes</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">replication_strategy</span> <span class="o">=</span> <span class="n">ReplicationStrategy</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">strategy_class</span><span class="p">,</span> <span class="n">strategy_options</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">tables</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">user_types</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">export_as_string</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s">"</span><span class="se">\n</span><span class="s">"</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">as_cql_query</span><span class="p">()]</span> <span class="o">+</span> <span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">export_as_string</span><span class="p">()</span> <span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">tables</span><span class="o">.</span><span class="n">values</span><span class="p">()])</span>
|
||||
@@ -652,6 +673,20 @@
|
||||
<span class="k">return</span> <span class="n">ret</span> <span class="o">+</span> <span class="p">(</span><span class="s">' AND durable_writes = </span><span class="si">%s</span><span class="s">;'</span> <span class="o">%</span> <span class="p">(</span><span class="s">"true"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">durable_writes</span> <span class="k">else</span> <span class="s">"false"</span><span class="p">))</span>
|
||||
|
||||
</div>
|
||||
<span class="k">class</span> <span class="nc">UserType</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
|
||||
<span class="n">keyspace</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="n">field_names</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="n">field_types</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">field_names</span><span class="p">,</span> <span class="n">field_types</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">keyspace</span> <span class="o">=</span> <span class="n">keyspace</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">field_names</span> <span class="o">=</span> <span class="n">field_names</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">field_types</span> <span class="o">=</span> <span class="n">field_types</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="TableMetadata"><a class="viewcode-back" href="../../api/cassandra/metadata.html#cassandra.metadata.TableMetadata">[docs]</a><span class="k">class</span> <span class="nc">TableMetadata</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> A representation of the schema for a single table.</span>
|
||||
@@ -704,7 +739,8 @@
|
||||
<span class="n">recognized_options</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s">"comment"</span><span class="p">,</span>
|
||||
<span class="s">"read_repair_chance"</span><span class="p">,</span>
|
||||
<span class="s">"dclocal_read_repair_chance"</span><span class="p">,</span>
|
||||
<span class="s">"dclocal_read_repair_chance"</span><span class="p">,</span> <span class="c"># kept to be safe, but see _build_table_options()</span>
|
||||
<span class="s">"local_read_repair_chance"</span><span class="p">,</span>
|
||||
<span class="s">"replicate_on_write"</span><span class="p">,</span>
|
||||
<span class="s">"gc_grace_seconds"</span><span class="p">,</span>
|
||||
<span class="s">"bloom_filter_fp_chance"</span><span class="p">,</span>
|
||||
@@ -1165,7 +1201,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" >Module code</a> »</li>
|
||||
<li><a href="../cassandra.html" >cassandra</a> »</li>
|
||||
</ul>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>cassandra.metrics — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>cassandra.metrics — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../../_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="../../index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="../../index.html" />
|
||||
<link rel="up" title="cassandra" href="../cassandra.html" />
|
||||
</head>
|
||||
<body>
|
||||
@@ -36,7 +36,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" >Module code</a> »</li>
|
||||
<li><a href="../cassandra.html" accesskey="U">cassandra</a> »</li>
|
||||
</ul>
|
||||
@@ -247,7 +247,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" >Module code</a> »</li>
|
||||
<li><a href="../cassandra.html" >cassandra</a> »</li>
|
||||
</ul>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>cassandra.policies — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>cassandra.policies — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../../_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="../../index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="../../index.html" />
|
||||
<link rel="up" title="cassandra" href="../cassandra.html" />
|
||||
</head>
|
||||
<body>
|
||||
@@ -36,7 +36,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" >Module code</a> »</li>
|
||||
<li><a href="../cassandra.html" accesskey="U">cassandra</a> »</li>
|
||||
</ul>
|
||||
@@ -637,6 +637,11 @@
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> The initial write to the distributed batch log that Cassandra performs</span>
|
||||
<span class="sd"> internally before a BATCH write.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">CAS</span> <span class="o">=</span> <span class="mi">5</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> A lighweight-transaction write, such as "DELETE ... IF EXISTS".</span>
|
||||
<span class="sd"> """</span>
|
||||
</div>
|
||||
<span class="n">WriteType</span><span class="o">.</span><span class="n">name_to_value</span> <span class="o">=</span> <span class="p">{</span>
|
||||
@@ -645,6 +650,7 @@
|
||||
<span class="s">'UNLOGGED_BATCH'</span><span class="p">:</span> <span class="n">WriteType</span><span class="o">.</span><span class="n">UNLOGGED_BATCH</span><span class="p">,</span>
|
||||
<span class="s">'COUNTER'</span><span class="p">:</span> <span class="n">WriteType</span><span class="o">.</span><span class="n">COUNTER</span><span class="p">,</span>
|
||||
<span class="s">'BATCH_LOG'</span><span class="p">:</span> <span class="n">WriteType</span><span class="o">.</span><span class="n">BATCH_LOG</span><span class="p">,</span>
|
||||
<span class="s">'CAS'</span><span class="p">:</span> <span class="n">WriteType</span><span class="o">.</span><span class="n">CAS</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
|
||||
@@ -892,7 +898,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" >Module code</a> »</li>
|
||||
<li><a href="../cassandra.html" >cassandra</a> »</li>
|
||||
</ul>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>cassandra.pool — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>cassandra.pool — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../../_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="../../index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="../../index.html" />
|
||||
<link rel="up" title="cassandra" href="../cassandra.html" />
|
||||
</head>
|
||||
<body>
|
||||
@@ -36,7 +36,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" >Module code</a> »</li>
|
||||
<li><a href="../cassandra.html" accesskey="U">cassandra</a> »</li>
|
||||
</ul>
|
||||
@@ -87,7 +87,7 @@
|
||||
<span class="kn">import</span> <span class="nn">re</span>
|
||||
<span class="kn">import</span> <span class="nn">socket</span>
|
||||
<span class="kn">import</span> <span class="nn">time</span>
|
||||
<span class="kn">from</span> <span class="nn">threading</span> <span class="kn">import</span> <span class="n">RLock</span><span class="p">,</span> <span class="n">Condition</span>
|
||||
<span class="kn">from</span> <span class="nn">threading</span> <span class="kn">import</span> <span class="n">Lock</span><span class="p">,</span> <span class="n">RLock</span><span class="p">,</span> <span class="n">Condition</span>
|
||||
<span class="kn">import</span> <span class="nn">weakref</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">weakref</span> <span class="kn">import</span> <span class="n">WeakSet</span>
|
||||
@@ -95,7 +95,8 @@
|
||||
<span class="kn">from</span> <span class="nn">cassandra.util</span> <span class="kn">import</span> <span class="n">WeakSet</span> <span class="c"># NOQA</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">cassandra</span> <span class="kn">import</span> <span class="n">AuthenticationFailed</span>
|
||||
<span class="kn">from</span> <span class="nn">cassandra.connection</span> <span class="kn">import</span> <span class="n">MAX_STREAM_PER_CONNECTION</span><span class="p">,</span> <span class="n">ConnectionException</span>
|
||||
<span class="kn">from</span> <span class="nn">cassandra.connection</span> <span class="kn">import</span> <span class="n">ConnectionException</span>
|
||||
<span class="kn">from</span> <span class="nn">cassandra.policies</span> <span class="kn">import</span> <span class="n">HostDistance</span>
|
||||
|
||||
<span class="n">log</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="n">__name__</span><span class="p">)</span>
|
||||
|
||||
@@ -350,11 +351,118 @@
|
||||
<span class="k">return</span> <span class="bp">True</span>
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">HostConnection</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> When using v3 of the native protocol, this is used instead of a connection</span>
|
||||
<span class="sd"> pool per host (HostConnectionPool) due to the increased in-flight capacity</span>
|
||||
<span class="sd"> of individual connections.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">host</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="n">host_distance</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="n">is_shutdown</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
|
||||
<span class="n">_session</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="n">_connection</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="n">_lock</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">host_distance</span><span class="p">,</span> <span class="n">session</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">host</span> <span class="o">=</span> <span class="n">host</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">host_distance</span> <span class="o">=</span> <span class="n">host_distance</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_session</span> <span class="o">=</span> <span class="n">weakref</span><span class="o">.</span><span class="n">proxy</span><span class="p">(</span><span class="n">session</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_lock</span> <span class="o">=</span> <span class="n">Lock</span><span class="p">()</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">host_distance</span> <span class="o">==</span> <span class="n">HostDistance</span><span class="o">.</span><span class="n">IGNORED</span><span class="p">:</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"Not opening connection to ignored host </span><span class="si">%s</span><span class="s">"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">elif</span> <span class="n">host_distance</span> <span class="o">==</span> <span class="n">HostDistance</span><span class="o">.</span><span class="n">REMOTE</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">session</span><span class="o">.</span><span class="n">cluster</span><span class="o">.</span><span class="n">connect_to_remote_hosts</span><span class="p">:</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"Not opening connection to remote host </span><span class="si">%s</span><span class="s">"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"Initializing connection for host </span><span class="si">%s</span><span class="s">"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_connection</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="n">cluster</span><span class="o">.</span><span class="n">connection_factory</span><span class="p">(</span><span class="n">host</span><span class="o">.</span><span class="n">address</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">session</span><span class="o">.</span><span class="n">keyspace</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_connection</span><span class="o">.</span><span class="n">set_keyspace_blocking</span><span class="p">(</span><span class="n">session</span><span class="o">.</span><span class="n">keyspace</span><span class="p">)</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"Finished initializing connection for host </span><span class="si">%s</span><span class="s">"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">borrow_connection</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">timeout</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_shutdown</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">ConnectionException</span><span class="p">(</span>
|
||||
<span class="s">"Pool for </span><span class="si">%s</span><span class="s"> is shutdown"</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">,),</span> <span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">)</span>
|
||||
|
||||
<span class="n">conn</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_connection</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">conn</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">NoConnectionsAvailable</span><span class="p">()</span>
|
||||
|
||||
<span class="k">with</span> <span class="n">conn</span><span class="o">.</span><span class="n">lock</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">conn</span><span class="o">.</span><span class="n">in_flight</span> <span class="o"><</span> <span class="n">conn</span><span class="o">.</span><span class="n">max_request_id</span><span class="p">:</span>
|
||||
<span class="n">conn</span><span class="o">.</span><span class="n">in_flight</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
<span class="k">return</span> <span class="n">conn</span><span class="p">,</span> <span class="n">conn</span><span class="o">.</span><span class="n">get_request_id</span><span class="p">()</span>
|
||||
|
||||
<span class="k">raise</span> <span class="n">NoConnectionsAvailable</span><span class="p">(</span><span class="s">"All request IDs are currently in use"</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">return_connection</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">connection</span><span class="p">):</span>
|
||||
<span class="k">with</span> <span class="n">connection</span><span class="o">.</span><span class="n">lock</span><span class="p">:</span>
|
||||
<span class="n">connection</span><span class="o">.</span><span class="n">in_flight</span> <span class="o">-=</span> <span class="mi">1</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">connection</span><span class="o">.</span><span class="n">is_defunct</span> <span class="ow">or</span> <span class="n">connection</span><span class="o">.</span><span class="n">is_closed</span><span class="p">:</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"Defunct or closed connection (</span><span class="si">%s</span><span class="s">) returned to pool, potentially "</span>
|
||||
<span class="s">"marking host </span><span class="si">%s</span><span class="s"> as down"</span><span class="p">,</span> <span class="nb">id</span><span class="p">(</span><span class="n">connection</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">)</span>
|
||||
<span class="n">is_down</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_session</span><span class="o">.</span><span class="n">cluster</span><span class="o">.</span><span class="n">signal_connection_failure</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">,</span> <span class="n">connection</span><span class="o">.</span><span class="n">last_error</span><span class="p">,</span> <span class="n">is_host_addition</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">is_down</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">shutdown</span><span class="p">()</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_connection</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">_lock</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_is_replacing</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_is_replacing</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_session</span><span class="o">.</span><span class="n">submit</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_replace</span><span class="p">,</span> <span class="n">connection</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_replace</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">connection</span><span class="p">):</span>
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"Replacing connection (</span><span class="si">%s</span><span class="s">) to </span><span class="si">%s</span><span class="s">"</span><span class="p">,</span> <span class="nb">id</span><span class="p">(</span><span class="n">connection</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">)</span>
|
||||
<span class="n">conn</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_session</span><span class="o">.</span><span class="n">cluster</span><span class="o">.</span><span class="n">connection_factory</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="o">.</span><span class="n">address</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_session</span><span class="o">.</span><span class="n">keyspace</span><span class="p">:</span>
|
||||
<span class="n">conn</span><span class="o">.</span><span class="n">set_keyspace_blocking</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_session</span><span class="o">.</span><span class="n">keyspace</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_connection</span> <span class="o">=</span> <span class="n">conn</span>
|
||||
<span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">_lock</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_is_replacing</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">shutdown</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">_lock</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_shutdown</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">is_shutdown</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_connection</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_set_keyspace_for_all_conns</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">callback</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_shutdown</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_connection</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">connection_finished_setting_keyspace</span><span class="p">(</span><span class="n">conn</span><span class="p">,</span> <span class="n">error</span><span class="p">):</span>
|
||||
<span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">error</span> <span class="k">else</span> <span class="p">[</span><span class="n">error</span><span class="p">]</span>
|
||||
<span class="n">callback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">errors</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_connection</span><span class="o">.</span><span class="n">set_keyspace_async</span><span class="p">(</span><span class="n">keyspace</span><span class="p">,</span> <span class="n">connection_finished_setting_keyspace</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_state</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">have_conn</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_connection</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span>
|
||||
<span class="n">in_flight</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_connection</span><span class="o">.</span><span class="n">in_flight</span> <span class="k">if</span> <span class="n">have_conn</span> <span class="k">else</span> <span class="mi">0</span>
|
||||
<span class="k">return</span> <span class="s">"shutdown: </span><span class="si">%s</span><span class="s">, open: </span><span class="si">%s</span><span class="s">, in_flights: </span><span class="si">%s</span><span class="s">"</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">is_shutdown</span><span class="p">,</span> <span class="n">have_conn</span><span class="p">,</span> <span class="n">in_flight</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="n">_MAX_SIMULTANEOUS_CREATION</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
<span class="n">_MIN_TRASH_INTERVAL</span> <span class="o">=</span> <span class="mi">10</span>
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">HostConnectionPool</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Used to pool connections to a host for v1 and v2 native protocol.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">host</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="n">host_distance</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
@@ -416,22 +524,23 @@
|
||||
<span class="n">max_conns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_session</span><span class="o">.</span><span class="n">cluster</span><span class="o">.</span><span class="n">get_max_connections_per_host</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">host_distance</span><span class="p">)</span>
|
||||
|
||||
<span class="n">least_busy</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">conns</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">c</span><span class="p">:</span> <span class="n">c</span><span class="o">.</span><span class="n">in_flight</span><span class="p">)</span>
|
||||
<span class="n">request_id</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="c"># to avoid another thread closing this connection while</span>
|
||||
<span class="c"># trashing it (through the return_connection process), hold</span>
|
||||
<span class="c"># the connection lock from this point until we've incremented</span>
|
||||
<span class="c"># its in_flight count</span>
|
||||
<span class="n">need_to_wait</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="k">with</span> <span class="n">least_busy</span><span class="o">.</span><span class="n">lock</span><span class="p">:</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">least_busy</span><span class="o">.</span><span class="n">in_flight</span> <span class="o">>=</span> <span class="n">MAX_STREAM_PER_CONNECTION</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">least_busy</span><span class="o">.</span><span class="n">in_flight</span> <span class="o"><</span> <span class="n">least_busy</span><span class="o">.</span><span class="n">max_request_id</span><span class="p">:</span>
|
||||
<span class="n">least_busy</span><span class="o">.</span><span class="n">in_flight</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
<span class="n">request_id</span> <span class="o">=</span> <span class="n">least_busy</span><span class="o">.</span><span class="n">get_request_id</span><span class="p">()</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c"># once we release the lock, wait for another connection</span>
|
||||
<span class="n">need_to_wait</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">least_busy</span><span class="o">.</span><span class="n">in_flight</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">need_to_wait</span><span class="p">:</span>
|
||||
<span class="c"># wait_for_conn will increment in_flight on the conn</span>
|
||||
<span class="n">least_busy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_wait_for_conn</span><span class="p">(</span><span class="n">timeout</span><span class="p">)</span>
|
||||
<span class="n">least_busy</span><span class="p">,</span> <span class="n">request_id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_wait_for_conn</span><span class="p">(</span><span class="n">timeout</span><span class="p">)</span>
|
||||
|
||||
<span class="c"># if we have too many requests on this connection but we still</span>
|
||||
<span class="c"># have space to open a new connection against this host, go ahead</span>
|
||||
@@ -439,7 +548,7 @@
|
||||
<span class="k">if</span> <span class="n">least_busy</span><span class="o">.</span><span class="n">in_flight</span> <span class="o">>=</span> <span class="n">max_reqs</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_connections</span><span class="p">)</span> <span class="o"><</span> <span class="n">max_conns</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_maybe_spawn_new_connection</span><span class="p">()</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">least_busy</span>
|
||||
<span class="k">return</span> <span class="n">least_busy</span><span class="p">,</span> <span class="n">request_id</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_maybe_spawn_new_connection</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">_lock</span><span class="p">:</span>
|
||||
@@ -528,9 +637,9 @@
|
||||
<span class="k">if</span> <span class="n">conns</span><span class="p">:</span>
|
||||
<span class="n">least_busy</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">conns</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">c</span><span class="p">:</span> <span class="n">c</span><span class="o">.</span><span class="n">in_flight</span><span class="p">)</span>
|
||||
<span class="k">with</span> <span class="n">least_busy</span><span class="o">.</span><span class="n">lock</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">least_busy</span><span class="o">.</span><span class="n">in_flight</span> <span class="o"><</span> <span class="n">MAX_STREAM_PER_CONNECTION</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">least_busy</span><span class="o">.</span><span class="n">in_flight</span> <span class="o"><</span> <span class="n">least_busy</span><span class="o">.</span><span class="n">max_request_id</span><span class="p">:</span>
|
||||
<span class="n">least_busy</span><span class="o">.</span><span class="n">in_flight</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
<span class="k">return</span> <span class="n">least_busy</span>
|
||||
<span class="k">return</span> <span class="n">least_busy</span><span class="p">,</span> <span class="n">least_busy</span><span class="o">.</span><span class="n">get_request_id</span><span class="p">()</span>
|
||||
|
||||
<span class="n">remaining</span> <span class="o">=</span> <span class="n">timeout</span> <span class="o">-</span> <span class="p">(</span><span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> <span class="o">-</span> <span class="n">start</span><span class="p">)</span>
|
||||
|
||||
@@ -545,7 +654,7 @@
|
||||
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"Defunct or closed connection (</span><span class="si">%s</span><span class="s">) returned to pool, potentially "</span>
|
||||
<span class="s">"marking host </span><span class="si">%s</span><span class="s"> as down"</span><span class="p">,</span> <span class="nb">id</span><span class="p">(</span><span class="n">connection</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">)</span>
|
||||
<span class="n">is_down</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_session</span><span class="o">.</span><span class="n">cluster</span><span class="o">.</span><span class="n">signal_connection_failure</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">,</span> <span class="n">connection</span><span class="o">.</span><span class="n">last_error</span><span class="p">,</span> <span class="n">is_host_addition</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">,</span> <span class="n">connection</span><span class="o">.</span><span class="n">last_error</span><span class="p">,</span> <span class="n">is_host_addition</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">is_down</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">shutdown</span><span class="p">()</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
@@ -692,7 +801,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" >Module code</a> »</li>
|
||||
<li><a href="../cassandra.html" >cassandra</a> »</li>
|
||||
</ul>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>cassandra.query — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>cassandra.query — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../../_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="../../index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="../../index.html" />
|
||||
<link rel="up" title="cassandra" href="../cassandra.html" />
|
||||
</head>
|
||||
<body>
|
||||
@@ -36,7 +36,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" >Module code</a> »</li>
|
||||
<li><a href="../cassandra.html" accesskey="U">cassandra</a> »</li>
|
||||
</ul>
|
||||
@@ -176,12 +176,12 @@
|
||||
|
||||
<span class="sd"> Example::</span>
|
||||
|
||||
<span class="sd"> >>> from cassandra.query import named_tuple_factory</span>
|
||||
<span class="sd"> >>> from cassandra.query import dict_factory</span>
|
||||
<span class="sd"> >>> session = cluster.connect('mykeyspace')</span>
|
||||
<span class="sd"> >>> session.row_factory = dict_factory</span>
|
||||
<span class="sd"> >>> rows = session.execute("SELECT name, age FROM users LIMIT 1")</span>
|
||||
<span class="sd"> >>> print rows[0]</span>
|
||||
<span class="sd"> {'age': 42, 'name': 'Bob'}</span>
|
||||
<span class="sd"> {u'age': 42, u'name': u'Bob'}</span>
|
||||
|
||||
<span class="sd"> .. versionchanged:: 2.0.0</span>
|
||||
<span class="sd"> moved from ``cassandra.decoder`` to ``cassandra.query``</span>
|
||||
@@ -380,21 +380,25 @@
|
||||
<span class="n">consistency_level</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="n">serial_consistency_level</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
|
||||
<span class="n">_protocol_version</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">column_metadata</span><span class="p">,</span> <span class="n">query_id</span><span class="p">,</span> <span class="n">routing_key_indexes</span><span class="p">,</span> <span class="n">query</span><span class="p">,</span> <span class="n">keyspace</span><span class="p">,</span>
|
||||
<span class="n">consistency_level</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">serial_consistency_level</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">fetch_size</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
|
||||
<span class="n">protocol_version</span><span class="p">,</span> <span class="n">consistency_level</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">serial_consistency_level</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
|
||||
<span class="n">fetch_size</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">column_metadata</span> <span class="o">=</span> <span class="n">column_metadata</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">query_id</span> <span class="o">=</span> <span class="n">query_id</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">routing_key_indexes</span> <span class="o">=</span> <span class="n">routing_key_indexes</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">query_string</span> <span class="o">=</span> <span class="n">query</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">keyspace</span> <span class="o">=</span> <span class="n">keyspace</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_protocol_version</span> <span class="o">=</span> <span class="n">protocol_version</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">consistency_level</span> <span class="o">=</span> <span class="n">consistency_level</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">serial_consistency_level</span> <span class="o">=</span> <span class="n">serial_consistency_level</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">fetch_size</span> <span class="o">=</span> <span class="n">fetch_size</span>
|
||||
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">from_message</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">query_id</span><span class="p">,</span> <span class="n">column_metadata</span><span class="p">,</span> <span class="n">cluster_metadata</span><span class="p">,</span> <span class="n">query</span><span class="p">,</span> <span class="n">keyspace</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">from_message</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">query_id</span><span class="p">,</span> <span class="n">column_metadata</span><span class="p">,</span> <span class="n">cluster_metadata</span><span class="p">,</span> <span class="n">query</span><span class="p">,</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">protocol_version</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">column_metadata</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">PreparedStatement</span><span class="p">(</span><span class="n">column_metadata</span><span class="p">,</span> <span class="n">query_id</span><span class="p">,</span> <span class="bp">None</span><span class="p">,</span> <span class="n">query</span><span class="p">,</span> <span class="n">keyspace</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">PreparedStatement</span><span class="p">(</span><span class="n">column_metadata</span><span class="p">,</span> <span class="n">query_id</span><span class="p">,</span> <span class="bp">None</span><span class="p">,</span> <span class="n">query</span><span class="p">,</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">protocol_version</span><span class="p">)</span>
|
||||
|
||||
<span class="n">partition_key_columns</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="n">routing_key_indexes</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
@@ -417,7 +421,8 @@
|
||||
<span class="k">pass</span> <span class="c"># we're missing a partition key component in the prepared</span>
|
||||
<span class="c"># statement; just leave routing_key_indexes as None</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">PreparedStatement</span><span class="p">(</span><span class="n">column_metadata</span><span class="p">,</span> <span class="n">query_id</span><span class="p">,</span> <span class="n">routing_key_indexes</span><span class="p">,</span> <span class="n">query</span><span class="p">,</span> <span class="n">keyspace</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">PreparedStatement</span><span class="p">(</span><span class="n">column_metadata</span><span class="p">,</span> <span class="n">query_id</span><span class="p">,</span> <span class="n">routing_key_indexes</span><span class="p">,</span>
|
||||
<span class="n">query</span><span class="p">,</span> <span class="n">keyspace</span><span class="p">,</span> <span class="n">protocol_version</span><span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="PreparedStatement.bind"><a class="viewcode-back" href="../../api/cassandra/query.html#cassandra.query.PreparedStatement.bind">[docs]</a> <span class="k">def</span> <span class="nf">bind</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">values</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
@@ -459,6 +464,7 @@
|
||||
<span class="sd"> """</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">consistency_level</span> <span class="o">=</span> <span class="n">prepared_statement</span><span class="o">.</span><span class="n">consistency_level</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">serial_consistency_level</span> <span class="o">=</span> <span class="n">prepared_statement</span><span class="o">.</span><span class="n">serial_consistency_level</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">fetch_size</span> <span class="o">=</span> <span class="n">prepared_statement</span><span class="o">.</span><span class="n">fetch_size</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">prepared_statement</span> <span class="o">=</span> <span class="n">prepared_statement</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">values</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
|
||||
@@ -475,6 +481,8 @@
|
||||
<span class="n">values</span> <span class="o">=</span> <span class="p">()</span>
|
||||
<span class="n">col_meta</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepared_statement</span><span class="o">.</span><span class="n">column_metadata</span>
|
||||
|
||||
<span class="n">proto_version</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepared_statement</span><span class="o">.</span><span class="n">_protocol_version</span>
|
||||
|
||||
<span class="c"># special case for binding dicts</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">values</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span>
|
||||
<span class="n">dict_values</span> <span class="o">=</span> <span class="n">values</span>
|
||||
@@ -524,7 +532,7 @@
|
||||
<span class="n">col_type</span> <span class="o">=</span> <span class="n">col_spec</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||||
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">values</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">col_type</span><span class="o">.</span><span class="n">serialize</span><span class="p">(</span><span class="n">value</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">values</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">col_type</span><span class="o">.</span><span class="n">serialize</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">proto_version</span><span class="p">))</span>
|
||||
<span class="k">except</span> <span class="p">(</span><span class="ne">TypeError</span><span class="p">,</span> <span class="n">struct</span><span class="o">.</span><span class="n">error</span><span class="p">):</span>
|
||||
<span class="n">col_name</span> <span class="o">=</span> <span class="n">col_spec</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
|
||||
<span class="n">expected_type</span> <span class="o">=</span> <span class="n">col_type</span>
|
||||
@@ -626,9 +634,10 @@
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">_statements_and_parameters</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="n">_session</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">batch_type</span><span class="o">=</span><span class="n">BatchType</span><span class="o">.</span><span class="n">LOGGED</span><span class="p">,</span> <span class="n">retry_policy</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
|
||||
<span class="n">consistency_level</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
|
||||
<span class="n">consistency_level</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> `batch_type` specifies The :class:`.BatchType` for the batch operation.</span>
|
||||
<span class="sd"> Defaults to :attr:`.BatchType.LOGGED`.</span>
|
||||
@@ -664,6 +673,7 @@
|
||||
<span class="sd"> """</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">batch_type</span> <span class="o">=</span> <span class="n">batch_type</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_statements_and_parameters</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_session</span> <span class="o">=</span> <span class="n">session</span>
|
||||
<span class="n">Statement</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">retry_policy</span><span class="o">=</span><span class="n">retry_policy</span><span class="p">,</span> <span class="n">consistency_level</span><span class="o">=</span><span class="n">consistency_level</span><span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="BatchStatement.add"><a class="viewcode-back" href="../../api/cassandra/query.html#cassandra.query.BatchStatement.add">[docs]</a> <span class="k">def</span> <span class="nf">add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">statement</span><span class="p">,</span> <span class="n">parameters</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
|
||||
@@ -676,7 +686,8 @@
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">statement</span><span class="p">,</span> <span class="n">six</span><span class="o">.</span><span class="n">string_types</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">parameters</span><span class="p">:</span>
|
||||
<span class="n">statement</span> <span class="o">=</span> <span class="n">bind_params</span><span class="p">(</span><span class="n">statement</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span>
|
||||
<span class="n">encoders</span> <span class="o">=</span> <span class="n">cql_encoders</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_session</span> <span class="ow">is</span> <span class="bp">None</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_session</span><span class="o">.</span><span class="n">encoders</span>
|
||||
<span class="n">statement</span> <span class="o">=</span> <span class="n">bind_params</span><span class="p">(</span><span class="n">statement</span><span class="p">,</span> <span class="n">parameters</span><span class="p">,</span> <span class="n">encoders</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_statements_and_parameters</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="bp">False</span><span class="p">,</span> <span class="n">statement</span><span class="p">,</span> <span class="p">()))</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">statement</span><span class="p">,</span> <span class="n">PreparedStatement</span><span class="p">):</span>
|
||||
<span class="n">query_id</span> <span class="o">=</span> <span class="n">statement</span><span class="o">.</span><span class="n">query_id</span>
|
||||
@@ -694,7 +705,8 @@
|
||||
<span class="c"># it must be a SimpleStatement</span>
|
||||
<span class="n">query_string</span> <span class="o">=</span> <span class="n">statement</span><span class="o">.</span><span class="n">query_string</span>
|
||||
<span class="k">if</span> <span class="n">parameters</span><span class="p">:</span>
|
||||
<span class="n">query_string</span> <span class="o">=</span> <span class="n">bind_params</span><span class="p">(</span><span class="n">query_string</span><span class="p">,</span> <span class="n">parameters</span><span class="p">)</span>
|
||||
<span class="n">encoders</span> <span class="o">=</span> <span class="n">cql_encoders</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_session</span> <span class="ow">is</span> <span class="bp">None</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_session</span><span class="o">.</span><span class="n">encoders</span>
|
||||
<span class="n">query_string</span> <span class="o">=</span> <span class="n">bind_params</span><span class="p">(</span><span class="n">query_string</span><span class="p">,</span> <span class="n">parameters</span><span class="p">,</span> <span class="n">encoders</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_statements_and_parameters</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="bp">False</span><span class="p">,</span> <span class="n">query_string</span><span class="p">,</span> <span class="p">()))</span>
|
||||
<span class="k">return</span> <span class="bp">self</span>
|
||||
</div>
|
||||
@@ -736,11 +748,11 @@
|
||||
<span class="k">return</span> <span class="n">cql_encode_sequence</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sequence</span><span class="p">)</span>
|
||||
|
||||
</div>
|
||||
<span class="k">def</span> <span class="nf">bind_params</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> <span class="n">params</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">bind_params</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> <span class="n">params</span><span class="p">,</span> <span class="n">encoders</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">params</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">query</span> <span class="o">%</span> <span class="nb">dict</span><span class="p">((</span><span class="n">k</span><span class="p">,</span> <span class="n">cql_encoders</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">v</span><span class="p">),</span> <span class="n">cql_encode_object</span><span class="p">)(</span><span class="n">v</span><span class="p">))</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">six</span><span class="o">.</span><span class="n">iteritems</span><span class="p">(</span><span class="n">params</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="n">query</span> <span class="o">%</span> <span class="nb">dict</span><span class="p">((</span><span class="n">k</span><span class="p">,</span> <span class="n">encoders</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">v</span><span class="p">),</span> <span class="n">cql_encode_object</span><span class="p">)(</span><span class="n">v</span><span class="p">))</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">six</span><span class="o">.</span><span class="n">iteritems</span><span class="p">(</span><span class="n">params</span><span class="p">))</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">query</span> <span class="o">%</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">cql_encoders</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">v</span><span class="p">),</span> <span class="n">cql_encode_object</span><span class="p">)(</span><span class="n">v</span><span class="p">)</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">params</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">query</span> <span class="o">%</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">encoders</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">v</span><span class="p">),</span> <span class="n">cql_encode_object</span><span class="p">)(</span><span class="n">v</span><span class="p">)</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">params</span><span class="p">)</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="TraceUnavailable"><a class="viewcode-back" href="../../api/cassandra/query.html#cassandra.query.TraceUnavailable">[docs]</a><span class="k">class</span> <span class="nc">TraceUnavailable</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
|
||||
@@ -929,7 +941,7 @@
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" >Module code</a> »</li>
|
||||
<li><a href="../cassandra.html" >cassandra</a> »</li>
|
||||
</ul>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>Overview: module code — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>Overview: module code — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="../index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="../index.html" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="related">
|
||||
@@ -35,7 +35,7 @@
|
||||
<li class="right" >
|
||||
<a href="../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
@@ -91,7 +91,7 @@
|
||||
<li class="right" >
|
||||
<a href="../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
|
||||
@@ -40,7 +40,7 @@ behavior in some other way, this is the place to do it:
|
||||
.. code-block:: python
|
||||
|
||||
from cassandra.cluster import Cluster
|
||||
from cassandra.polices import DCAwareRoundRobinPolicy
|
||||
from cassandra.policies import DCAwareRoundRobinPolicy
|
||||
|
||||
cluster = Cluster(
|
||||
['10.1.1.3', '10.1.1.4', '10.1.1.5'],
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>cassandra - Exceptions and Enums — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>cassandra - Exceptions and Enums — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="../index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="../index.html" />
|
||||
<link rel="up" title="API Documentation" href="index.html" />
|
||||
<link rel="next" title="cassandra.cluster - Clusters and Sessions" href="cassandra/cluster.html" />
|
||||
<link rel="prev" title="API Documentation" href="index.html" />
|
||||
@@ -44,7 +44,7 @@
|
||||
<li class="right" >
|
||||
<a href="index.html" title="API Documentation"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li><a href="../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="index.html" accesskey="U">API Documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -341,7 +341,7 @@ the driver.</p>
|
||||
<li class="right" >
|
||||
<a href="index.html" title="API Documentation"
|
||||
>previous</a> |</li>
|
||||
<li><a href="../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="index.html" >API Documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>cassandra.auth - Authentication — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>cassandra.auth - Authentication — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../../_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="../../index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="../../index.html" />
|
||||
<link rel="up" title="API Documentation" href="../index.html" />
|
||||
<link rel="next" title="cassandra.metadata - Schema and Ring Topology" href="metadata.html" />
|
||||
<link rel="prev" title="cassandra.policies - Load balancing and Failure Handling Policies" href="policies.html" />
|
||||
@@ -44,7 +44,7 @@
|
||||
<li class="right" >
|
||||
<a href="policies.html" title="cassandra.policies - Load balancing and Failure Handling Policies"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" accesskey="U">API Documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -202,7 +202,7 @@ or a string.</p>
|
||||
<li class="right" >
|
||||
<a href="policies.html" title="cassandra.policies - Load balancing and Failure Handling Policies"
|
||||
>previous</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" >API Documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>cassandra.cluster - Clusters and Sessions — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>cassandra.cluster - Clusters and Sessions — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../../_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="../../index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="../../index.html" />
|
||||
<link rel="up" title="API Documentation" href="../index.html" />
|
||||
<link rel="next" title="cassandra.policies - Load balancing and Failure Handling Policies" href="policies.html" />
|
||||
<link rel="prev" title="cassandra - Exceptions and Enums" href="../cassandra.html" />
|
||||
@@ -44,7 +44,7 @@
|
||||
<li class="right" >
|
||||
<a href="../cassandra.html" title="cassandra - Exceptions and Enums"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" accesskey="U">API Documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -55,7 +55,7 @@
|
||||
title="previous chapter"><tt class="docutils literal docutils literal docutils literal"><span class="pre">cassandra</span></tt> - Exceptions and Enums</a></p>
|
||||
<h4>Next topic</h4>
|
||||
<p class="topless"><a href="policies.html"
|
||||
title="next chapter"><tt class="docutils literal"><span class="pre">cassandra.policies</span></tt> - Load balancing and Failure Handling Policies</a></p>
|
||||
title="next chapter"><tt class="docutils literal docutils literal"><span class="pre">cassandra.policies</span></tt> - Load balancing and Failure Handling Policies</a></p>
|
||||
<h3>This Page</h3>
|
||||
<ul class="this-page-menu">
|
||||
<li><a href="../../_sources/api/cassandra/cluster.txt"
|
||||
@@ -159,7 +159,7 @@ one of its subclasses. Defaults to <a class="reference internal" href="policies
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="cassandra.cluster.Cluster.reconnection_policy">
|
||||
<tt class="descname">reconnection_policy</tt><em class="property"> = <cassandra.policies.ExponentialReconnectionPolicy object at 0x3dd7b10></em><a class="headerlink" href="#cassandra.cluster.Cluster.reconnection_policy" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descname">reconnection_policy</tt><em class="property"> = <cassandra.policies.ExponentialReconnectionPolicy object at 0x302b710></em><a class="headerlink" href="#cassandra.cluster.Cluster.reconnection_policy" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>An instance of <a class="reference internal" href="policies.html#cassandra.policies.ReconnectionPolicy" title="cassandra.policies.ReconnectionPolicy"><tt class="xref py py-class docutils literal"><span class="pre">policies.ReconnectionPolicy</span></tt></a>. Defaults to an instance
|
||||
of <a class="reference internal" href="policies.html#cassandra.policies.ExponentialReconnectionPolicy" title="cassandra.policies.ExponentialReconnectionPolicy"><tt class="xref py py-class docutils literal"><span class="pre">ExponentialReconnectionPolicy</span></tt></a> with a base delay of one second and
|
||||
a max delay of ten minutes.</p>
|
||||
@@ -167,7 +167,7 @@ a max delay of ten minutes.</p>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="cassandra.cluster.Cluster.default_retry_policy">
|
||||
<tt class="descname">default_retry_policy</tt><em class="property"> = <cassandra.policies.RetryPolicy object at 0x3dd7b50></em><a class="headerlink" href="#cassandra.cluster.Cluster.default_retry_policy" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descname">default_retry_policy</tt><em class="property"> = <cassandra.policies.RetryPolicy object at 0x302b750></em><a class="headerlink" href="#cassandra.cluster.Cluster.default_retry_policy" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>A default <a class="reference internal" href="policies.html#cassandra.policies.RetryPolicy" title="cassandra.policies.RetryPolicy"><tt class="xref py py-class docutils literal"><span class="pre">policies.RetryPolicy</span></tt></a> instance to use for all
|
||||
<a class="reference internal" href="query.html#cassandra.query.Statement" title="cassandra.query.Statement"><tt class="xref py py-class docutils literal"><span class="pre">Statement</span></tt></a> objects which do not have a <a class="reference internal" href="query.html#cassandra.query.Statement.retry_policy" title="cassandra.query.Statement.retry_policy"><tt class="xref py py-attr docutils literal"><span class="pre">retry_policy</span></tt></a>
|
||||
explicitly set.</p>
|
||||
@@ -293,6 +293,8 @@ marked up, or marked down.</p>
|
||||
for each host with <a class="reference internal" href="policies.html#cassandra.policies.HostDistance" title="cassandra.policies.HostDistance"><tt class="xref py py-class docutils literal"><span class="pre">HostDistance</span></tt></a> equal to <cite>host_distance</cite>.
|
||||
The default is 2 for <tt class="xref py py-attr docutils literal"><span class="pre">LOCAL</span></tt> and 1 for
|
||||
<tt class="xref py py-attr docutils literal"><span class="pre">REMOTE</span></tt>.</p>
|
||||
<p>This property is ignored if <a class="reference internal" href="#cassandra.cluster.Cluster.protocol_version" title="cassandra.cluster.Cluster.protocol_version"><tt class="xref py py-attr docutils literal"><span class="pre">protocol_version</span></tt></a> is
|
||||
3 or higher.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
@@ -302,6 +304,10 @@ The default is 2 for <tt class="xref py py-attr docutils literal"><span class="p
|
||||
for each host with <a class="reference internal" href="policies.html#cassandra.policies.HostDistance" title="cassandra.policies.HostDistance"><tt class="xref py py-class docutils literal"><span class="pre">HostDistance</span></tt></a> equal to <cite>host_distance</cite>.
|
||||
The default is 2 for <tt class="xref py py-attr docutils literal"><span class="pre">LOCAL</span></tt> and 1 for
|
||||
<tt class="xref py py-attr docutils literal"><span class="pre">REMOTE</span></tt>.</p>
|
||||
<p>If <a class="reference internal" href="#cassandra.cluster.Cluster.protocol_version" title="cassandra.cluster.Cluster.protocol_version"><tt class="xref py py-attr docutils literal"><span class="pre">protocol_version</span></tt></a> is set to 3 or higher, this
|
||||
is not supported (there is always one connection per host, unless
|
||||
the host is remote and <tt class="xref py py-attr docutils literal"><span class="pre">connect_to_remote_hosts</span></tt> is <tt class="xref py py-const docutils literal"><span class="pre">False</span></tt>)
|
||||
and using this will result in an <tt class="xref py py-exc docutils literal"><span class="pre">UnsupporteOperation</span></tt>.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
@@ -311,6 +317,8 @@ The default is 2 for <tt class="xref py py-attr docutils literal"><span class="p
|
||||
for each host with <a class="reference internal" href="policies.html#cassandra.policies.HostDistance" title="cassandra.policies.HostDistance"><tt class="xref py py-class docutils literal"><span class="pre">HostDistance</span></tt></a> equal to <cite>host_distance</cite>.
|
||||
The default is 8 for <tt class="xref py py-attr docutils literal"><span class="pre">LOCAL</span></tt> and 2 for
|
||||
<tt class="xref py py-attr docutils literal"><span class="pre">REMOTE</span></tt>.</p>
|
||||
<p>This property is ignored if <a class="reference internal" href="#cassandra.cluster.Cluster.protocol_version" title="cassandra.cluster.Cluster.protocol_version"><tt class="xref py py-attr docutils literal"><span class="pre">protocol_version</span></tt></a> is
|
||||
3 or higher.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
@@ -320,6 +328,10 @@ The default is 8 for <tt class="xref py py-attr docutils literal"><span class="p
|
||||
for each host with <a class="reference internal" href="policies.html#cassandra.policies.HostDistance" title="cassandra.policies.HostDistance"><tt class="xref py py-class docutils literal"><span class="pre">HostDistance</span></tt></a> equal to <cite>host_distance</cite>.
|
||||
The default is 2 for <tt class="xref py py-attr docutils literal"><span class="pre">LOCAL</span></tt> and 1 for
|
||||
<tt class="xref py py-attr docutils literal"><span class="pre">REMOTE</span></tt>.</p>
|
||||
<p>If <a class="reference internal" href="#cassandra.cluster.Cluster.protocol_version" title="cassandra.cluster.Cluster.protocol_version"><tt class="xref py py-attr docutils literal"><span class="pre">protocol_version</span></tt></a> is set to 3 or higher, this
|
||||
is not supported (there is always one connection per host, unless
|
||||
the host is remote and <tt class="xref py py-attr docutils literal"><span class="pre">connect_to_remote_hosts</span></tt> is <tt class="xref py py-const docutils literal"><span class="pre">False</span></tt>)
|
||||
and using this will result in an <tt class="xref py py-exc docutils literal"><span class="pre">UnsupporteOperation</span></tt>.</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
@@ -358,7 +370,7 @@ timeout, neither the registered callback or errback will be called.</p>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="cassandra.cluster.Session.row_factory">
|
||||
<tt class="descname">row_factory</tt><em class="property"> = <function named_tuple_factory at 0x3dcd9b0></em><a class="headerlink" href="#cassandra.cluster.Session.row_factory" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descname">row_factory</tt><em class="property"> = <function named_tuple_factory at 0x3020758></em><a class="headerlink" href="#cassandra.cluster.Session.row_factory" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The format to return row results in. By default, each
|
||||
returned row will be a named tuple. You can alternatively
|
||||
use any of the following:</p>
|
||||
@@ -375,8 +387,10 @@ use any of the following:</p>
|
||||
<dl class="attribute">
|
||||
<dt id="cassandra.cluster.Session.default_fetch_size">
|
||||
<tt class="descname">default_fetch_size</tt><em class="property"> = 5000</em><a class="headerlink" href="#cassandra.cluster.Session.default_fetch_size" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>By default, this many rows will be fetched at a time. This can be
|
||||
specified per-query through <a class="reference internal" href="query.html#cassandra.query.Statement.fetch_size" title="cassandra.query.Statement.fetch_size"><tt class="xref py py-attr docutils literal"><span class="pre">Statement.fetch_size</span></tt></a>.</p>
|
||||
<dd><p>By default, this many rows will be fetched at a time. Setting
|
||||
this to <tt class="xref py py-const docutils literal"><span class="pre">None</span></tt> will disable automatic paging for large query
|
||||
results. The fetch size can be also specified per-query through
|
||||
<a class="reference internal" href="query.html#cassandra.query.Statement.fetch_size" title="cassandra.query.Statement.fetch_size"><tt class="xref py py-attr docutils literal"><span class="pre">Statement.fetch_size</span></tt></a>.</p>
|
||||
<p>This only takes effect when protocol version 2 or higher is used.
|
||||
See <a class="reference internal" href="#cassandra.cluster.Cluster.protocol_version" title="cassandra.cluster.Cluster.protocol_version"><tt class="xref py py-attr docutils literal"><span class="pre">Cluster.protocol_version</span></tt></a> for details.</p>
|
||||
<div class="versionadded">
|
||||
@@ -703,7 +717,7 @@ against.</p>
|
||||
<li class="right" >
|
||||
<a href="../cassandra.html" title="cassandra - Exceptions and Enums"
|
||||
>previous</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" >API Documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>cassandra.concurrent - Utilities for Concurrent Statement Execution — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>cassandra.concurrent - Utilities for Concurrent Statement Execution — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../../_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="../../index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="../../index.html" />
|
||||
<link rel="up" title="API Documentation" href="../index.html" />
|
||||
<link rel="next" title="cassandra.connection - Low Level Connection Info" href="connection.html" />
|
||||
<link rel="prev" title="cassandra.decoder - Data Return Formats" href="decoder.html" />
|
||||
@@ -44,7 +44,7 @@
|
||||
<li class="right" >
|
||||
<a href="decoder.html" title="cassandra.decoder - Data Return Formats"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" accesskey="U">API Documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -160,7 +160,7 @@ should be a sequence or <tt class="xref py py-const docutils literal"><span clas
|
||||
<li class="right" >
|
||||
<a href="decoder.html" title="cassandra.decoder - Data Return Formats"
|
||||
>previous</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" >API Documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>cassandra.connection - Low Level Connection Info — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>cassandra.connection - Low Level Connection Info — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../../_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="../../index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="../../index.html" />
|
||||
<link rel="up" title="API Documentation" href="../index.html" />
|
||||
<link rel="next" title="cassandra.io.asyncorereactor - asyncore Event Loop" href="io/asyncorereactor.html" />
|
||||
<link rel="prev" title="cassandra.concurrent - Utilities for Concurrent Statement Execution" href="concurrent.html" />
|
||||
@@ -44,7 +44,7 @@
|
||||
<li class="right" >
|
||||
<a href="concurrent.html" title="cassandra.concurrent - Utilities for Concurrent Statement Execution"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" accesskey="U">API Documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -52,7 +52,7 @@
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h4>Previous topic</h4>
|
||||
<p class="topless"><a href="concurrent.html"
|
||||
title="previous chapter"><tt class="docutils literal"><span class="pre">cassandra.concurrent</span></tt> - Utilities for Concurrent Statement Execution</a></p>
|
||||
title="previous chapter"><tt class="docutils literal docutils literal docutils literal"><span class="pre">cassandra.concurrent</span></tt> - Utilities for Concurrent Statement Execution</a></p>
|
||||
<h4>Next topic</h4>
|
||||
<p class="topless"><a href="io/asyncorereactor.html"
|
||||
title="next chapter"><tt class="docutils literal"><span class="pre">cassandra.io.asyncorereactor</span></tt> - <tt class="docutils literal"><span class="pre">asyncore</span></tt> Event Loop</a></p>
|
||||
@@ -133,7 +133,7 @@ was already at the max number of in-flight operations.</p>
|
||||
<li class="right" >
|
||||
<a href="concurrent.html" title="cassandra.concurrent - Utilities for Concurrent Statement Execution"
|
||||
>previous</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" >API Documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>cassandra.decoder - Data Return Formats — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>cassandra.decoder - Data Return Formats — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../../_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="../../index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="../../index.html" />
|
||||
<link rel="up" title="API Documentation" href="../index.html" />
|
||||
<link rel="next" title="cassandra.concurrent - Utilities for Concurrent Statement Execution" href="concurrent.html" />
|
||||
<link rel="prev" title="cassandra.pool - Hosts and Connection Pools" href="pool.html" />
|
||||
@@ -44,7 +44,7 @@
|
||||
<li class="right" >
|
||||
<a href="pool.html" title="cassandra.pool - Hosts and Connection Pools"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" accesskey="U">API Documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -131,7 +131,7 @@
|
||||
<li class="right" >
|
||||
<a href="pool.html" title="cassandra.pool - Hosts and Connection Pools"
|
||||
>previous</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" >API Documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>cassandra.io.asyncorereactor - asyncore Event Loop — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>cassandra.io.asyncorereactor - asyncore Event Loop — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../../../_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../../',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="../../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../../_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="../../../index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="../../../index.html" />
|
||||
<link rel="up" title="API Documentation" href="../../index.html" />
|
||||
<link rel="next" title="cassandra.io.libevreactor - libev Event Loop" href="libevreactor.html" />
|
||||
<link rel="prev" title="cassandra.connection - Low Level Connection Info" href="../connection.html" />
|
||||
@@ -44,7 +44,7 @@
|
||||
<li class="right" >
|
||||
<a href="../connection.html" title="cassandra.connection - Low Level Connection Info"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li><a href="../../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../../index.html" accesskey="U">API Documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -52,7 +52,7 @@
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h4>Previous topic</h4>
|
||||
<p class="topless"><a href="../connection.html"
|
||||
title="previous chapter"><tt class="docutils literal docutils literal docutils literal"><span class="pre">cassandra.connection</span></tt> - Low Level Connection Info</a></p>
|
||||
title="previous chapter"><tt class="docutils literal docutils literal docutils literal docutils literal"><span class="pre">cassandra.connection</span></tt> - Low Level Connection Info</a></p>
|
||||
<h4>Next topic</h4>
|
||||
<p class="topless"><a href="libevreactor.html"
|
||||
title="next chapter"><tt class="docutils literal"><span class="pre">cassandra.io.libevreactor</span></tt> - <tt class="docutils literal"><span class="pre">libev</span></tt> Event Loop</a></p>
|
||||
@@ -114,7 +114,7 @@ module in the Python standard library for its event loop.</p>
|
||||
<li class="right" >
|
||||
<a href="../connection.html" title="cassandra.connection - Low Level Connection Info"
|
||||
>previous</a> |</li>
|
||||
<li><a href="../../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../../index.html" >API Documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>cassandra.io.libevreactor - libev Event Loop — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>cassandra.io.libevreactor - libev Event Loop — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../../../_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../../',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="../../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../../_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="../../../index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="../../../index.html" />
|
||||
<link rel="up" title="API Documentation" href="../../index.html" />
|
||||
<link rel="next" title="Installation" href="../../../installation.html" />
|
||||
<link rel="prev" title="cassandra.io.asyncorereactor - asyncore Event Loop" href="asyncorereactor.html" />
|
||||
@@ -44,7 +44,7 @@
|
||||
<li class="right" >
|
||||
<a href="asyncorereactor.html" title="cassandra.io.asyncorereactor - asyncore Event Loop"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li><a href="../../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../../index.html" accesskey="U">API Documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -113,7 +113,7 @@
|
||||
<li class="right" >
|
||||
<a href="asyncorereactor.html" title="cassandra.io.asyncorereactor - asyncore Event Loop"
|
||||
>previous</a> |</li>
|
||||
<li><a href="../../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../../index.html" >API Documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>cassandra.metadata - Schema and Ring Topology — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>cassandra.metadata - Schema and Ring Topology — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../../_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="../../index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="../../index.html" />
|
||||
<link rel="up" title="API Documentation" href="../index.html" />
|
||||
<link rel="next" title="cassandra.metrics - Performance Metrics" href="metrics.html" />
|
||||
<link rel="prev" title="cassandra.auth - Authentication" href="auth.html" />
|
||||
@@ -44,7 +44,7 @@
|
||||
<li class="right" >
|
||||
<a href="auth.html" title="cassandra.auth - Authentication"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" accesskey="U">API Documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -61,7 +61,7 @@
|
||||
|
||||
<h4>Previous topic</h4>
|
||||
<p class="topless"><a href="auth.html"
|
||||
title="previous chapter"><tt class="docutils literal"><span class="pre">cassandra.auth</span></tt> - Authentication</a></p>
|
||||
title="previous chapter"><tt class="docutils literal docutils literal docutils literal"><span class="pre">cassandra.auth</span></tt> - Authentication</a></p>
|
||||
<h4>Next topic</h4>
|
||||
<p class="topless"><a href="metrics.html"
|
||||
title="next chapter"><tt class="docutils literal"><span class="pre">cassandra.metrics</span></tt> - Performance Metrics</a></p>
|
||||
@@ -441,7 +441,7 @@ replica nodes for a given <a class="reference internal" href="#cassandra.metadat
|
||||
<li class="right" >
|
||||
<a href="auth.html" title="cassandra.auth - Authentication"
|
||||
>previous</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" >API Documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>cassandra.metrics - Performance Metrics — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>cassandra.metrics - Performance Metrics — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../../_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="../../index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="../../index.html" />
|
||||
<link rel="up" title="API Documentation" href="../index.html" />
|
||||
<link rel="next" title="cassandra.query - Prepared Statements, Batch Statements, Tracing, and Row Factories" href="query.html" />
|
||||
<link rel="prev" title="cassandra.metadata - Schema and Ring Topology" href="metadata.html" />
|
||||
@@ -44,7 +44,7 @@
|
||||
<li class="right" >
|
||||
<a href="metadata.html" title="cassandra.metadata - Schema and Ring Topology"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" accesskey="U">API Documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -208,7 +208,7 @@ the driver currently has open.</p>
|
||||
<li class="right" >
|
||||
<a href="metadata.html" title="cassandra.metadata - Schema and Ring Topology"
|
||||
>previous</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" >API Documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>cassandra.policies - Load balancing and Failure Handling Policies — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>cassandra.policies - Load balancing and Failure Handling Policies — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../../_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="../../index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="../../index.html" />
|
||||
<link rel="up" title="API Documentation" href="../index.html" />
|
||||
<link rel="next" title="cassandra.auth - Authentication" href="auth.html" />
|
||||
<link rel="prev" title="cassandra.cluster - Clusters and Sessions" href="cluster.html" />
|
||||
@@ -44,7 +44,7 @@
|
||||
<li class="right" >
|
||||
<a href="cluster.html" title="cassandra.cluster - Clusters and Sessions"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" accesskey="U">API Documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -360,6 +360,12 @@ not be replayed in order to avoid overcount.</p>
|
||||
internally before a BATCH write.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="cassandra.policies.WriteType.CAS">
|
||||
<tt class="descname">CAS</tt><em class="property"> = 5</em><a class="headerlink" href="#cassandra.policies.WriteType.CAS" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>A lighweight-transaction write, such as “DELETE ... IF EXISTS”.</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
@@ -538,7 +544,7 @@ than reading nothing, even if there is a risk of reading stale data.</p>
|
||||
<li class="right" >
|
||||
<a href="cluster.html" title="cassandra.cluster - Clusters and Sessions"
|
||||
>previous</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" >API Documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>cassandra.pool - Hosts and Connection Pools — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>cassandra.pool - Hosts and Connection Pools — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../../_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="../../index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="../../index.html" />
|
||||
<link rel="up" title="API Documentation" href="../index.html" />
|
||||
<link rel="next" title="cassandra.decoder - Data Return Formats" href="decoder.html" />
|
||||
<link rel="prev" title="cassandra.query - Prepared Statements, Batch Statements, Tracing, and Row Factories" href="query.html" />
|
||||
@@ -44,7 +44,7 @@
|
||||
<li class="right" >
|
||||
<a href="query.html" title="cassandra.query - Prepared Statements, Batch Statements, Tracing, and Row Factories"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" accesskey="U">API Documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -52,10 +52,10 @@
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h4>Previous topic</h4>
|
||||
<p class="topless"><a href="query.html"
|
||||
title="previous chapter"><tt class="docutils literal"><span class="pre">cassandra.query</span></tt> - Prepared Statements, Batch Statements, Tracing, and Row Factories</a></p>
|
||||
title="previous chapter"><tt class="docutils literal docutils literal"><span class="pre">cassandra.query</span></tt> - Prepared Statements, Batch Statements, Tracing, and Row Factories</a></p>
|
||||
<h4>Next topic</h4>
|
||||
<p class="topless"><a href="decoder.html"
|
||||
title="next chapter"><tt class="docutils literal"><span class="pre">cassandra.decoder</span></tt> - Data Return Formats</a></p>
|
||||
title="next chapter"><tt class="docutils literal docutils literal docutils literal docutils literal"><span class="pre">cassandra.decoder</span></tt> - Data Return Formats</a></p>
|
||||
<h3>This Page</h3>
|
||||
<ul class="this-page-menu">
|
||||
<li><a href="../../_sources/api/cassandra/pool.txt"
|
||||
@@ -161,7 +161,7 @@ no open connections.</p>
|
||||
<li class="right" >
|
||||
<a href="query.html" title="cassandra.query - Prepared Statements, Batch Statements, Tracing, and Row Factories"
|
||||
>previous</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" >API Documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>cassandra.query - Prepared Statements, Batch Statements, Tracing, and Row Factories — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>cassandra.query - Prepared Statements, Batch Statements, Tracing, and Row Factories — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../../_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="../../index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="../../index.html" />
|
||||
<link rel="up" title="API Documentation" href="../index.html" />
|
||||
<link rel="next" title="cassandra.pool - Hosts and Connection Pools" href="pool.html" />
|
||||
<link rel="prev" title="cassandra.metrics - Performance Metrics" href="metrics.html" />
|
||||
@@ -44,7 +44,7 @@
|
||||
<li class="right" >
|
||||
<a href="metrics.html" title="cassandra.metrics - Performance Metrics"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" accesskey="U">API Documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -52,10 +52,10 @@
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h4>Previous topic</h4>
|
||||
<p class="topless"><a href="metrics.html"
|
||||
title="previous chapter"><tt class="docutils literal docutils literal"><span class="pre">cassandra.metrics</span></tt> - Performance Metrics</a></p>
|
||||
title="previous chapter"><tt class="docutils literal docutils literal docutils literal docutils literal"><span class="pre">cassandra.metrics</span></tt> - Performance Metrics</a></p>
|
||||
<h4>Next topic</h4>
|
||||
<p class="topless"><a href="pool.html"
|
||||
title="next chapter"><tt class="docutils literal docutils literal docutils literal"><span class="pre">cassandra.pool</span></tt> - Hosts and Connection Pools</a></p>
|
||||
title="next chapter"><tt class="docutils literal docutils literal docutils literal docutils literal"><span class="pre">cassandra.pool</span></tt> - Hosts and Connection Pools</a></p>
|
||||
<h3>This Page</h3>
|
||||
<ul class="this-page-menu">
|
||||
<li><a href="../../_sources/api/cassandra/query.txt"
|
||||
@@ -547,7 +547,7 @@ received the query.</p>
|
||||
<li class="right" >
|
||||
<a href="metrics.html" title="cassandra.metrics - Performance Metrics"
|
||||
>previous</a> |</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
<li><a href="../index.html" >API Documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>API Documentation — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>API Documentation — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="../index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="../index.html" />
|
||||
<link rel="next" title="cassandra - Exceptions and Enums" href="cassandra.html" />
|
||||
<link rel="prev" title="Python Cassandra Driver" href="../index.html" />
|
||||
</head>
|
||||
@@ -43,7 +43,7 @@
|
||||
<li class="right" >
|
||||
<a href="../index.html" title="Python Cassandra Driver"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li><a href="../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
@@ -132,7 +132,7 @@
|
||||
<li class="right" >
|
||||
<a href="../index.html" title="Python Cassandra Driver"
|
||||
>previous</a> |</li>
|
||||
<li><a href="../index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="../index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>Index — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>Index — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
@@ -15,7 +15,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: './',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -24,7 +24,7 @@
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="index.html" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="related">
|
||||
@@ -36,7 +36,7 @@
|
||||
<li class="right" >
|
||||
<a href="py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
@@ -246,6 +246,10 @@
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
|
||||
<dt><a href="api/cassandra/policies.html#cassandra.policies.WriteType.CAS">CAS (cassandra.policies.WriteType attribute)</a>
|
||||
</dt>
|
||||
|
||||
|
||||
<dt><a href="api/cassandra.html#module-cassandra">cassandra (module)</a>
|
||||
</dt>
|
||||
|
||||
@@ -1384,7 +1388,7 @@
|
||||
<li class="right" >
|
||||
<a href="py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>Getting Started — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>Getting Started — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: './',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="index.html" />
|
||||
<link rel="next" title="Upgrading" href="upgrading.html" />
|
||||
<link rel="prev" title="Installation" href="installation.html" />
|
||||
</head>
|
||||
@@ -43,7 +43,7 @@
|
||||
<li class="right" >
|
||||
<a href="installation.html" title="Installation"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
@@ -130,7 +130,7 @@ every node in your cluster.</p>
|
||||
<p>If you need to use a non-standard port, use SSL, or customize the driver’s
|
||||
behavior in some other way, this is the place to do it:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">cassandra.cluster</span> <span class="kn">import</span> <span class="n">Cluster</span>
|
||||
<span class="kn">from</span> <span class="nn">cassandra.polices</span> <span class="kn">import</span> <span class="n">DCAwareRoundRobinPolicy</span>
|
||||
<span class="kn">from</span> <span class="nn">cassandra.policies</span> <span class="kn">import</span> <span class="n">DCAwareRoundRobinPolicy</span>
|
||||
|
||||
<span class="n">cluster</span> <span class="o">=</span> <span class="n">Cluster</span><span class="p">(</span>
|
||||
<span class="p">[</span><span class="s">'10.1.1.3'</span><span class="p">,</span> <span class="s">'10.1.1.4'</span><span class="p">,</span> <span class="s">'10.1.1.5'</span><span class="p">],</span>
|
||||
@@ -517,7 +517,7 @@ level on that:</p>
|
||||
<li class="right" >
|
||||
<a href="installation.html" title="Installation"
|
||||
>previous</a> |</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
|
||||
10
index.html
10
index.html
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>Python Cassandra Driver — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>Python Cassandra Driver — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: './',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="#" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="#" />
|
||||
<link rel="next" title="API Documentation" href="api/index.html" />
|
||||
</head>
|
||||
<body>
|
||||
@@ -39,7 +39,7 @@
|
||||
<li class="right" >
|
||||
<a href="api/index.html" title="API Documentation"
|
||||
accesskey="N">next</a> |</li>
|
||||
<li><a href="#">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="#">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
@@ -156,7 +156,7 @@ If you don’t have an IRC client, you can use <a class="reference external"
|
||||
<li class="right" >
|
||||
<a href="api/index.html" title="API Documentation"
|
||||
>next</a> |</li>
|
||||
<li><a href="#">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="#">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>Installation — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>Installation — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: './',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="index.html" />
|
||||
<link rel="next" title="Getting Started" href="getting_started.html" />
|
||||
<link rel="prev" title="cassandra.io.libevreactor - libev Event Loop" href="api/cassandra/io/libevreactor.html" />
|
||||
</head>
|
||||
@@ -43,7 +43,7 @@
|
||||
<li class="right" >
|
||||
<a href="api/cassandra/io/libevreactor.html" title="cassandra.io.libevreactor - libev Event Loop"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
@@ -259,7 +259,7 @@ the libev event loop by doing the following:</p>
|
||||
<li class="right" >
|
||||
<a href="api/cassandra/io/libevreactor.html" title="cassandra.io.libevreactor - libev Event Loop"
|
||||
>previous</a> |</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
|
||||
BIN
objects.inv
BIN
objects.inv
Binary file not shown.
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>Performance Notes — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>Performance Notes — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: './',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="index.html" />
|
||||
<link rel="next" title="Paging Large Queries" href="query_paging.html" />
|
||||
<link rel="prev" title="Upgrading" href="upgrading.html" />
|
||||
</head>
|
||||
@@ -43,7 +43,7 @@
|
||||
<li class="right" >
|
||||
<a href="upgrading.html" title="Upgrading"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
@@ -355,7 +355,7 @@ objects should all be created after forking the process, not before.</p>
|
||||
<li class="right" >
|
||||
<a href="upgrading.html" title="Upgrading"
|
||||
>previous</a> |</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>Python Module Index — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>Python Module Index — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: './',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="index.html" />
|
||||
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
<li class="right" >
|
||||
<a href="#" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
@@ -153,7 +153,7 @@
|
||||
<li class="right" >
|
||||
<a href="#" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>Paging Large Queries — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>Paging Large Queries — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: './',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="index.html" />
|
||||
<link rel="next" title="Security" href="security.html" />
|
||||
<link rel="prev" title="Performance Notes" href="performance.html" />
|
||||
</head>
|
||||
@@ -43,7 +43,7 @@
|
||||
<li class="right" >
|
||||
<a href="performance.html" title="Performance Notes"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
@@ -186,7 +186,7 @@ pages. For example:</p>
|
||||
<li class="right" >
|
||||
<a href="performance.html" title="Performance Notes"
|
||||
>previous</a> |</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
|
||||
10
search.html
10
search.html
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>Search — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>Search — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: './',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -24,7 +24,7 @@
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="_static/searchtools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="index.html" />
|
||||
<script type="text/javascript">
|
||||
jQuery(function() { Search.loadIndex("searchindex.js"); });
|
||||
</script>
|
||||
@@ -43,7 +43,7 @@
|
||||
<li class="right" >
|
||||
<a href="py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
@@ -94,7 +94,7 @@
|
||||
<li class="right" >
|
||||
<a href="py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>Security — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>Security — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: './',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="index.html" />
|
||||
<link rel="prev" title="Paging Large Queries" href="query_paging.html" />
|
||||
</head>
|
||||
<body>
|
||||
@@ -39,7 +39,7 @@
|
||||
<li class="right" >
|
||||
<a href="query_paging.html" title="Paging Large Queries"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
@@ -177,7 +177,7 @@ Cassandra’s default protocol.</p>
|
||||
<li class="right" >
|
||||
<a href="query_paging.html" title="Paging Large Queries"
|
||||
>previous</a> |</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>Upgrading — Cassandra Driver 2.0.2 documentation</title>
|
||||
<title>Upgrading — Cassandra Driver 2.1.0b1 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
@@ -14,7 +14,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: './',
|
||||
VERSION: '2.0.2',
|
||||
VERSION: '2.1.0b1',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
@@ -23,7 +23,7 @@
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<link rel="top" title="Cassandra Driver 2.0.2 documentation" href="index.html" />
|
||||
<link rel="top" title="Cassandra Driver 2.1.0b1 documentation" href="index.html" />
|
||||
<link rel="next" title="Performance Notes" href="performance.html" />
|
||||
<link rel="prev" title="Getting Started" href="getting_started.html" />
|
||||
</head>
|
||||
@@ -43,7 +43,7 @@
|
||||
<li class="right" >
|
||||
<a href="getting_started.html" title="Getting Started"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
@@ -210,7 +210,7 @@ now:</p>
|
||||
<li class="right" >
|
||||
<a href="getting_started.html" title="Getting Started"
|
||||
>previous</a> |</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.0.2 documentation</a> »</li>
|
||||
<li><a href="index.html">Cassandra Driver 2.1.0b1 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
|
||||
Reference in New Issue
Block a user