/usr/share/doc/python-pymongo-doc/html/examples/tailable.html is in python-pymongo-doc 3.6.1+dfsg1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Tailable Cursors — PyMongo 3.6.1 documentation</title>
<link rel="stylesheet" href="../_static/pydoctheme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
VERSION: '3.6.1',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt'
};
</script>
<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>
<script type="text/javascript" src="../_static/sidebar.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="TLS/SSL and PyMongo" href="tls.html" />
<link rel="prev" title="PyMongo and mod_wsgi" href="mod_wsgi.html" />
</head>
<body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="tls.html" title="TLS/SSL and PyMongo"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="mod_wsgi.html" title="PyMongo and mod_wsgi"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">PyMongo 3.6.1 documentation</a> »</li>
<li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Examples</a> »</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="section" id="tailable-cursors">
<h1>Tailable Cursors<a class="headerlink" href="#tailable-cursors" title="Permalink to this headline">ΒΆ</a></h1>
<p>By default, MongoDB will automatically close a cursor when the client has
exhausted all results in the cursor. However, for <a class="reference external" href="https://docs.mongodb.org/manual/core/capped-collections/">capped collections</a> you may
use a <a class="reference external" href="https://docs.mongodb.org/manual/reference/glossary/#term-tailable-cursor">tailable cursor</a>
that remains open after the client exhausts the results in the initial cursor.</p>
<p>The following is a basic example of using a tailable cursor to tail the oplog
of a replica set member:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">time</span>
<span class="kn">import</span> <span class="nn">pymongo</span>
<span class="n">client</span> <span class="o">=</span> <span class="n">pymongo</span><span class="o">.</span><span class="n">MongoClient</span><span class="p">()</span>
<span class="n">oplog</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="n">local</span><span class="o">.</span><span class="n">oplog</span><span class="o">.</span><span class="n">rs</span>
<span class="n">first</span> <span class="o">=</span> <span class="n">oplog</span><span class="o">.</span><span class="n">find</span><span class="p">()</span><span class="o">.</span><span class="n">sort</span><span class="p">(</span><span class="s1">'$natural'</span><span class="p">,</span> <span class="n">pymongo</span><span class="o">.</span><span class="n">ASCENDING</span><span class="p">)</span><span class="o">.</span><span class="n">limit</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">next</span><span class="p">()</span>
<span class="nb">print</span><span class="p">(</span><span class="n">first</span><span class="p">)</span>
<span class="n">ts</span> <span class="o">=</span> <span class="n">first</span><span class="p">[</span><span class="s1">'ts'</span><span class="p">]</span>
<span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="c1"># For a regular capped collection CursorType.TAILABLE_AWAIT is the</span>
<span class="c1"># only option required to create a tailable cursor. When querying the</span>
<span class="c1"># oplog the oplog_replay option enables an optimization to quickly</span>
<span class="c1"># find the 'ts' value we're looking for. The oplog_replay option</span>
<span class="c1"># can only be used when querying the oplog.</span>
<span class="n">cursor</span> <span class="o">=</span> <span class="n">oplog</span><span class="o">.</span><span class="n">find</span><span class="p">({</span><span class="s1">'ts'</span><span class="p">:</span> <span class="p">{</span><span class="s1">'$gt'</span><span class="p">:</span> <span class="n">ts</span><span class="p">}},</span>
<span class="n">cursor_type</span><span class="o">=</span><span class="n">pymongo</span><span class="o">.</span><span class="n">CursorType</span><span class="o">.</span><span class="n">TAILABLE_AWAIT</span><span class="p">,</span>
<span class="n">oplog_replay</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="k">while</span> <span class="n">cursor</span><span class="o">.</span><span class="n">alive</span><span class="p">:</span>
<span class="k">for</span> <span class="n">doc</span> <span class="ow">in</span> <span class="n">cursor</span><span class="p">:</span>
<span class="n">ts</span> <span class="o">=</span> <span class="n">doc</span><span class="p">[</span><span class="s1">'ts'</span><span class="p">]</span>
<span class="nb">print</span><span class="p">(</span><span class="n">doc</span><span class="p">)</span>
<span class="c1"># We end up here if the find() returned no documents or if the</span>
<span class="c1"># tailable cursor timed out (no new documents were added to the</span>
<span class="c1"># collection for more than 1 second).</span>
<span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h4>Previous topic</h4>
<p class="topless"><a href="mod_wsgi.html"
title="previous chapter">PyMongo and mod_wsgi</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="tls.html"
title="next chapter">TLS/SSL and PyMongo</a></p>
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="../_sources/examples/tailable.rst.txt"
rel="nofollow">Show Source</a></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../search.html" method="get">
<div><input type="text" name="q" /></div>
<div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="tls.html" title="TLS/SSL and PyMongo"
>next</a> |</li>
<li class="right" >
<a href="mod_wsgi.html" title="PyMongo and mod_wsgi"
>previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">PyMongo 3.6.1 documentation</a> »</li>
<li class="nav-item nav-item-1"><a href="index.html" >Examples</a> »</li>
</ul>
</div>
<div class="footer" role="contentinfo">
© Copyright MongoDB, Inc. 2008-present. MongoDB, Mongo, and the leaf logo are registered trademarks of MongoDB, Inc.
</div>
</body>
</html>
|