<!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="X-UA-Compatible" content="IE=Edge" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>monitoring – Tools for monitoring driver events. — PyMongo 3.7.2 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" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></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/language_data.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="operations – Operation class definitions" href="operations.html" /> <link rel="prev" title="mongo_replica_set_client – Tools for connecting to a MongoDB replica set" href="mongo_replica_set_client.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="operations.html" title="operations – Operation class definitions" accesskey="N">next</a> |</li> <li class="right" > <a href="mongo_replica_set_client.html" title="mongo_replica_set_client – Tools for connecting to a MongoDB replica set" accesskey="P">previous</a> |</li> <li class="nav-item nav-item-0"><a href="../../index.html">PyMongo 3.7.2 documentation</a> »</li> <li class="nav-item nav-item-1"><a href="../index.html" >API Documentation</a> »</li> <li class="nav-item nav-item-2"><a href="index.html" accesskey="U"><code class="docutils literal notranslate"><span class="pre">pymongo</span></code> – Python driver for MongoDB</a> »</li> </ul> </div> <div class="document"> <div class="documentwrapper"> <div class="bodywrapper"> <div class="body" role="main"> <div class="section" id="module-pymongo.monitoring"> <span id="monitoring-tools-for-monitoring-driver-events"></span><h1><code class="xref py py-mod docutils literal notranslate"><span class="pre">monitoring</span></code> – Tools for monitoring driver events.<a class="headerlink" href="#module-pymongo.monitoring" title="Permalink to this headline">¶</a></h1> <p>Tools to monitor driver events.</p> <div class="versionadded"> <p><span class="versionmodified">New in version 3.1.</span></p> </div> <p>Use <a class="reference internal" href="#pymongo.monitoring.register" title="pymongo.monitoring.register"><code class="xref py py-func docutils literal notranslate"><span class="pre">register()</span></code></a> to register global listeners for specific events. Listeners must inherit from one of the abstract classes below and implement the correct functions for that class.</p> <p>For example, a simple command logger might be implemented like this:</p> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">logging</span> <span class="kn">from</span> <span class="nn">pymongo</span> <span class="k">import</span> <span class="n">monitoring</span> <span class="k">class</span> <span class="nc">CommandLogger</span><span class="p">(</span><span class="n">monitoring</span><span class="o">.</span><span class="n">CommandListener</span><span class="p">):</span> <span class="k">def</span> <span class="nf">started</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">logging</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Command </span><span class="si">{0.command_name}</span><span class="s2"> with request id "</span> <span class="s2">"</span><span class="si">{0.request_id}</span><span class="s2"> started on server "</span> <span class="s2">"</span><span class="si">{0.connection_id}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">event</span><span class="p">))</span> <span class="k">def</span> <span class="nf">succeeded</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">logging</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Command </span><span class="si">{0.command_name}</span><span class="s2"> with request id "</span> <span class="s2">"</span><span class="si">{0.request_id}</span><span class="s2"> on server </span><span class="si">{0.connection_id}</span><span class="s2"> "</span> <span class="s2">"succeeded in </span><span class="si">{0.duration_micros}</span><span class="s2"> "</span> <span class="s2">"microseconds"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">event</span><span class="p">))</span> <span class="k">def</span> <span class="nf">failed</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">logging</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Command </span><span class="si">{0.command_name}</span><span class="s2"> with request id "</span> <span class="s2">"</span><span class="si">{0.request_id}</span><span class="s2"> on server </span><span class="si">{0.connection_id}</span><span class="s2"> "</span> <span class="s2">"failed in </span><span class="si">{0.duration_micros}</span><span class="s2"> "</span> <span class="s2">"microseconds"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">event</span><span class="p">))</span> <span class="n">monitoring</span><span class="o">.</span><span class="n">register</span><span class="p">(</span><span class="n">CommandLogger</span><span class="p">())</span> </pre></div> </div> <p>Server discovery and monitoring events are also available. For example:</p> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">ServerLogger</span><span class="p">(</span><span class="n">monitoring</span><span class="o">.</span><span class="n">ServerListener</span><span class="p">):</span> <span class="k">def</span> <span class="nf">opened</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">logging</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Server </span><span class="si">{0.server_address}</span><span class="s2"> added to topology "</span> <span class="s2">"</span><span class="si">{0.topology_id}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">event</span><span class="p">))</span> <span class="k">def</span> <span class="nf">description_changed</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">previous_server_type</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">previous_description</span><span class="o">.</span><span class="n">server_type</span> <span class="n">new_server_type</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">new_description</span><span class="o">.</span><span class="n">server_type</span> <span class="k">if</span> <span class="n">new_server_type</span> <span class="o">!=</span> <span class="n">previous_server_type</span><span class="p">:</span> <span class="c1"># server_type_name was added in PyMongo 3.4</span> <span class="n">logging</span><span class="o">.</span><span class="n">info</span><span class="p">(</span> <span class="s2">"Server </span><span class="si">{0.server_address}</span><span class="s2"> changed type from "</span> <span class="s2">"</span><span class="si">{0.previous_description.server_type_name}</span><span class="s2"> to "</span> <span class="s2">"</span><span class="si">{0.new_description.server_type_name}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">event</span><span class="p">))</span> <span class="k">def</span> <span class="nf">closed</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">logging</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">"Server </span><span class="si">{0.server_address}</span><span class="s2"> removed from topology "</span> <span class="s2">"</span><span class="si">{0.topology_id}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">event</span><span class="p">))</span> <span class="k">class</span> <span class="nc">HeartbeatLogger</span><span class="p">(</span><span class="n">monitoring</span><span class="o">.</span><span class="n">ServerHeartbeatListener</span><span class="p">):</span> <span class="k">def</span> <span class="nf">started</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">logging</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Heartbeat sent to server "</span> <span class="s2">"</span><span class="si">{0.connection_id}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">event</span><span class="p">))</span> <span class="k">def</span> <span class="nf">succeeded</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="c1"># The reply.document attribute was added in PyMongo 3.4.</span> <span class="n">logging</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Heartbeat to server </span><span class="si">{0.connection_id}</span><span class="s2"> "</span> <span class="s2">"succeeded with reply "</span> <span class="s2">"</span><span class="si">{0.reply.document}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">event</span><span class="p">))</span> <span class="k">def</span> <span class="nf">failed</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">logging</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">"Heartbeat to server </span><span class="si">{0.connection_id}</span><span class="s2"> "</span> <span class="s2">"failed with error </span><span class="si">{0.reply}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">event</span><span class="p">))</span> <span class="k">class</span> <span class="nc">TopologyLogger</span><span class="p">(</span><span class="n">monitoring</span><span class="o">.</span><span class="n">TopologyListener</span><span class="p">):</span> <span class="k">def</span> <span class="nf">opened</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">logging</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Topology with id </span><span class="si">{0.topology_id}</span><span class="s2"> "</span> <span class="s2">"opened"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">event</span><span class="p">))</span> <span class="k">def</span> <span class="nf">description_changed</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">logging</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Topology description updated for "</span> <span class="s2">"topology id </span><span class="si">{0.topology_id}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">event</span><span class="p">))</span> <span class="n">previous_topology_type</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">previous_description</span><span class="o">.</span><span class="n">topology_type</span> <span class="n">new_topology_type</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">new_description</span><span class="o">.</span><span class="n">topology_type</span> <span class="k">if</span> <span class="n">new_topology_type</span> <span class="o">!=</span> <span class="n">previous_topology_type</span><span class="p">:</span> <span class="c1"># topology_type_name was added in PyMongo 3.4</span> <span class="n">logging</span><span class="o">.</span><span class="n">info</span><span class="p">(</span> <span class="s2">"Topology </span><span class="si">{0.topology_id}</span><span class="s2"> changed type from "</span> <span class="s2">"</span><span class="si">{0.previous_description.topology_type_name}</span><span class="s2"> to "</span> <span class="s2">"</span><span class="si">{0.new_description.topology_type_name}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">event</span><span class="p">))</span> <span class="c1"># The has_writable_server and has_readable_server methods</span> <span class="c1"># were added in PyMongo 3.4.</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">event</span><span class="o">.</span><span class="n">new_description</span><span class="o">.</span><span class="n">has_writable_server</span><span class="p">():</span> <span class="n">logging</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">"No writable servers available."</span><span class="p">)</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">event</span><span class="o">.</span><span class="n">new_description</span><span class="o">.</span><span class="n">has_readable_server</span><span class="p">():</span> <span class="n">logging</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">"No readable servers available."</span><span class="p">)</span> <span class="k">def</span> <span class="nf">closed</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">logging</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Topology with id </span><span class="si">{0.topology_id}</span><span class="s2"> "</span> <span class="s2">"closed"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">event</span><span class="p">))</span> </pre></div> </div> <p>Event listeners can also be registered per instance of <a class="reference internal" href="mongo_client.html#pymongo.mongo_client.MongoClient" title="pymongo.mongo_client.MongoClient"><code class="xref py py-class docutils literal notranslate"><span class="pre">MongoClient</span></code></a>:</p> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">client</span> <span class="o">=</span> <span class="n">MongoClient</span><span class="p">(</span><span class="n">event_listeners</span><span class="o">=</span><span class="p">[</span><span class="n">CommandLogger</span><span class="p">()])</span> </pre></div> </div> <p>Note that previously registered global listeners are automatically included when configuring per client event listeners. Registering a new global listener will not add that listener to existing client instances.</p> <div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">Events are delivered <strong>synchronously</strong>. Application threads block waiting for event handlers (e.g. <a class="reference internal" href="#pymongo.monitoring.CommandListener.started" title="pymongo.monitoring.CommandListener.started"><code class="xref py py-meth docutils literal notranslate"><span class="pre">started()</span></code></a>) to return. Care must be taken to ensure that your event handlers are efficient enough to not adversely affect overall application performance.</p> </div> <div class="admonition warning"> <p class="first admonition-title">Warning</p> <p class="last">The command documents published through this API are <em>not</em> copies. If you intend to modify them in any way you must copy them in your event handler first.</p> </div> <dl class="function"> <dt id="pymongo.monitoring.register"> <code class="descclassname">pymongo.monitoring.</code><code class="descname">register</code><span class="sig-paren">(</span><em>listener</em><span class="sig-paren">)</span><a class="headerlink" href="#pymongo.monitoring.register" title="Permalink to this definition">¶</a></dt> <dd><p>Register a global event listener.</p> <table class="docutils field-list" frame="void" rules="none"> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> <li><cite>listener</cite>: A subclasses of <a class="reference internal" href="#pymongo.monitoring.CommandListener" title="pymongo.monitoring.CommandListener"><code class="xref py py-class docutils literal notranslate"><span class="pre">CommandListener</span></code></a>, <a class="reference internal" href="#pymongo.monitoring.ServerHeartbeatListener" title="pymongo.monitoring.ServerHeartbeatListener"><code class="xref py py-class docutils literal notranslate"><span class="pre">ServerHeartbeatListener</span></code></a>, <a class="reference internal" href="#pymongo.monitoring.ServerListener" title="pymongo.monitoring.ServerListener"><code class="xref py py-class docutils literal notranslate"><span class="pre">ServerListener</span></code></a>, or <a class="reference internal" href="#pymongo.monitoring.TopologyListener" title="pymongo.monitoring.TopologyListener"><code class="xref py py-class docutils literal notranslate"><span class="pre">TopologyListener</span></code></a>.</li> </ul> </td> </tr> </tbody> </table> </dd></dl> <dl class="class"> <dt id="pymongo.monitoring.CommandListener"> <em class="property">class </em><code class="descclassname">pymongo.monitoring.</code><code class="descname">CommandListener</code><a class="headerlink" href="#pymongo.monitoring.CommandListener" title="Permalink to this definition">¶</a></dt> <dd><p>Abstract base class for command listeners. Handles <cite>CommandStartedEvent</cite>, <cite>CommandSucceededEvent</cite>, and <cite>CommandFailedEvent</cite>.</p> <dl class="method"> <dt id="pymongo.monitoring.CommandListener.failed"> <code class="descname">failed</code><span class="sig-paren">(</span><em>event</em><span class="sig-paren">)</span><a class="headerlink" href="#pymongo.monitoring.CommandListener.failed" title="Permalink to this definition">¶</a></dt> <dd><p>Abstract method to handle a <cite>CommandFailedEvent</cite>.</p> <table class="docutils field-list" frame="void" rules="none"> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> <li><cite>event</cite>: An instance of <a class="reference internal" href="#pymongo.monitoring.CommandFailedEvent" title="pymongo.monitoring.CommandFailedEvent"><code class="xref py py-class docutils literal notranslate"><span class="pre">CommandFailedEvent</span></code></a>.</li> </ul> </td> </tr> </tbody> </table> </dd></dl> <dl class="method"> <dt id="pymongo.monitoring.CommandListener.started"> <code class="descname">started</code><span class="sig-paren">(</span><em>event</em><span class="sig-paren">)</span><a class="headerlink" href="#pymongo.monitoring.CommandListener.started" title="Permalink to this definition">¶</a></dt> <dd><p>Abstract method to handle a <cite>CommandStartedEvent</cite>.</p> <table class="docutils field-list" frame="void" rules="none"> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> <li><cite>event</cite>: An instance of <a class="reference internal" href="#pymongo.monitoring.CommandStartedEvent" title="pymongo.monitoring.CommandStartedEvent"><code class="xref py py-class docutils literal notranslate"><span class="pre">CommandStartedEvent</span></code></a>.</li> </ul> </td> </tr> </tbody> </table> </dd></dl> <dl class="method"> <dt id="pymongo.monitoring.CommandListener.succeeded"> <code class="descname">succeeded</code><span class="sig-paren">(</span><em>event</em><span class="sig-paren">)</span><a class="headerlink" href="#pymongo.monitoring.CommandListener.succeeded" title="Permalink to this definition">¶</a></dt> <dd><p>Abstract method to handle a <cite>CommandSucceededEvent</cite>.</p> <table class="docutils field-list" frame="void" rules="none"> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> <li><cite>event</cite>: An instance of <a class="reference internal" href="#pymongo.monitoring.CommandSucceededEvent" title="pymongo.monitoring.CommandSucceededEvent"><code class="xref py py-class docutils literal notranslate"><span class="pre">CommandSucceededEvent</span></code></a>.</li> </ul> </td> </tr> </tbody> </table> </dd></dl> </dd></dl> <dl class="class"> <dt id="pymongo.monitoring.ServerListener"> <em class="property">class </em><code class="descclassname">pymongo.monitoring.</code><code class="descname">ServerListener</code><a class="headerlink" href="#pymongo.monitoring.ServerListener" title="Permalink to this definition">¶</a></dt> <dd><p>Abstract base class for server listeners. Handles <cite>ServerOpeningEvent</cite>, <cite>ServerDescriptionChangedEvent</cite>, and <cite>ServerClosedEvent</cite>.</p> <div class="versionadded"> <p><span class="versionmodified">New in version 3.3.</span></p> </div> <dl class="method"> <dt id="pymongo.monitoring.ServerListener.closed"> <code class="descname">closed</code><span class="sig-paren">(</span><em>event</em><span class="sig-paren">)</span><a class="headerlink" href="#pymongo.monitoring.ServerListener.closed" title="Permalink to this definition">¶</a></dt> <dd><p>Abstract method to handle a <cite>ServerClosedEvent</cite>.</p> <table class="docutils field-list" frame="void" rules="none"> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> <li><cite>event</cite>: An instance of <a class="reference internal" href="#pymongo.monitoring.ServerClosedEvent" title="pymongo.monitoring.ServerClosedEvent"><code class="xref py py-class docutils literal notranslate"><span class="pre">ServerClosedEvent</span></code></a>.</li> </ul> </td> </tr> </tbody> </table> </dd></dl> <dl class="method"> <dt id="pymongo.monitoring.ServerListener.description_changed"> <code class="descname">description_changed</code><span class="sig-paren">(</span><em>event</em><span class="sig-paren">)</span><a class="headerlink" href="#pymongo.monitoring.ServerListener.description_changed" title="Permalink to this definition">¶</a></dt> <dd><p>Abstract method to handle a <cite>ServerDescriptionChangedEvent</cite>.</p> <table class="docutils field-list" frame="void" rules="none"> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> <li><cite>event</cite>: An instance of <a class="reference internal" href="#pymongo.monitoring.ServerDescriptionChangedEvent" title="pymongo.monitoring.ServerDescriptionChangedEvent"><code class="xref py py-class docutils literal notranslate"><span class="pre">ServerDescriptionChangedEvent</span></code></a>.</li> </ul> </td> </tr> </tbody> </table> </dd></dl> <dl class="method"> <dt id="pymongo.monitoring.ServerListener.opened"> <code class="descname">opened</code><span class="sig-paren">(</span><em>event</em><span class="sig-paren">)</span><a class="headerlink" href="#pymongo.monitoring.ServerListener.opened" title="Permalink to this definition">¶</a></dt> <dd><p>Abstract method to handle a <cite>ServerOpeningEvent</cite>.</p> <table class="docutils field-list" frame="void" rules="none"> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> <li><cite>event</cite>: An instance of <a class="reference internal" href="#pymongo.monitoring.ServerOpeningEvent" title="pymongo.monitoring.ServerOpeningEvent"><code class="xref py py-class docutils literal notranslate"><span class="pre">ServerOpeningEvent</span></code></a>.</li> </ul> </td> </tr> </tbody> </table> </dd></dl> </dd></dl> <dl class="class"> <dt id="pymongo.monitoring.ServerHeartbeatListener"> <em class="property">class </em><code class="descclassname">pymongo.monitoring.</code><code class="descname">ServerHeartbeatListener</code><a class="headerlink" href="#pymongo.monitoring.ServerHeartbeatListener" title="Permalink to this definition">¶</a></dt> <dd><p>Abstract base class for server heartbeat listeners. Handles <cite>ServerHeartbeatStartedEvent</cite>, <cite>ServerHeartbeatSucceededEvent</cite>, and <cite>ServerHeartbeatFailedEvent</cite>.</p> <div class="versionadded"> <p><span class="versionmodified">New in version 3.3.</span></p> </div> <dl class="method"> <dt id="pymongo.monitoring.ServerHeartbeatListener.failed"> <code class="descname">failed</code><span class="sig-paren">(</span><em>event</em><span class="sig-paren">)</span><a class="headerlink" href="#pymongo.monitoring.ServerHeartbeatListener.failed" title="Permalink to this definition">¶</a></dt> <dd><p>Abstract method to handle a <cite>ServerHeartbeatFailedEvent</cite>.</p> <table class="docutils field-list" frame="void" rules="none"> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> <li><cite>event</cite>: An instance of <a class="reference internal" href="#pymongo.monitoring.ServerHeartbeatFailedEvent" title="pymongo.monitoring.ServerHeartbeatFailedEvent"><code class="xref py py-class docutils literal notranslate"><span class="pre">ServerHeartbeatFailedEvent</span></code></a>.</li> </ul> </td> </tr> </tbody> </table> </dd></dl> <dl class="method"> <dt id="pymongo.monitoring.ServerHeartbeatListener.started"> <code class="descname">started</code><span class="sig-paren">(</span><em>event</em><span class="sig-paren">)</span><a class="headerlink" href="#pymongo.monitoring.ServerHeartbeatListener.started" title="Permalink to this definition">¶</a></dt> <dd><p>Abstract method to handle a <cite>ServerHeartbeatStartedEvent</cite>.</p> <table class="docutils field-list" frame="void" rules="none"> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> <li><cite>event</cite>: An instance of <a class="reference internal" href="#pymongo.monitoring.ServerHeartbeatStartedEvent" title="pymongo.monitoring.ServerHeartbeatStartedEvent"><code class="xref py py-class docutils literal notranslate"><span class="pre">ServerHeartbeatStartedEvent</span></code></a>.</li> </ul> </td> </tr> </tbody> </table> </dd></dl> <dl class="method"> <dt id="pymongo.monitoring.ServerHeartbeatListener.succeeded"> <code class="descname">succeeded</code><span class="sig-paren">(</span><em>event</em><span class="sig-paren">)</span><a class="headerlink" href="#pymongo.monitoring.ServerHeartbeatListener.succeeded" title="Permalink to this definition">¶</a></dt> <dd><p>Abstract method to handle a <cite>ServerHeartbeatSucceededEvent</cite>.</p> <table class="docutils field-list" frame="void" rules="none"> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> <li><cite>event</cite>: An instance of <a class="reference internal" href="#pymongo.monitoring.ServerHeartbeatSucceededEvent" title="pymongo.monitoring.ServerHeartbeatSucceededEvent"><code class="xref py py-class docutils literal notranslate"><span class="pre">ServerHeartbeatSucceededEvent</span></code></a>.</li> </ul> </td> </tr> </tbody> </table> </dd></dl> </dd></dl> <dl class="class"> <dt id="pymongo.monitoring.TopologyListener"> <em class="property">class </em><code class="descclassname">pymongo.monitoring.</code><code class="descname">TopologyListener</code><a class="headerlink" href="#pymongo.monitoring.TopologyListener" title="Permalink to this definition">¶</a></dt> <dd><p>Abstract base class for topology monitoring listeners. Handles <cite>TopologyOpenedEvent</cite>, <cite>TopologyDescriptionChangedEvent</cite>, and <cite>TopologyClosedEvent</cite>.</p> <div class="versionadded"> <p><span class="versionmodified">New in version 3.3.</span></p> </div> <dl class="method"> <dt id="pymongo.monitoring.TopologyListener.closed"> <code class="descname">closed</code><span class="sig-paren">(</span><em>event</em><span class="sig-paren">)</span><a class="headerlink" href="#pymongo.monitoring.TopologyListener.closed" title="Permalink to this definition">¶</a></dt> <dd><p>Abstract method to handle a <cite>TopologyClosedEvent</cite>.</p> <table class="docutils field-list" frame="void" rules="none"> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> <li><cite>event</cite>: An instance of <a class="reference internal" href="#pymongo.monitoring.TopologyClosedEvent" title="pymongo.monitoring.TopologyClosedEvent"><code class="xref py py-class docutils literal notranslate"><span class="pre">TopologyClosedEvent</span></code></a>.</li> </ul> </td> </tr> </tbody> </table> </dd></dl> <dl class="method"> <dt id="pymongo.monitoring.TopologyListener.description_changed"> <code class="descname">description_changed</code><span class="sig-paren">(</span><em>event</em><span class="sig-paren">)</span><a class="headerlink" href="#pymongo.monitoring.TopologyListener.description_changed" title="Permalink to this definition">¶</a></dt> <dd><p>Abstract method to handle a <cite>TopologyDescriptionChangedEvent</cite>.</p> <table class="docutils field-list" frame="void" rules="none"> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> <li><cite>event</cite>: An instance of <a class="reference internal" href="#pymongo.monitoring.TopologyDescriptionChangedEvent" title="pymongo.monitoring.TopologyDescriptionChangedEvent"><code class="xref py py-class docutils literal notranslate"><span class="pre">TopologyDescriptionChangedEvent</span></code></a>.</li> </ul> </td> </tr> </tbody> </table> </dd></dl> <dl class="method"> <dt id="pymongo.monitoring.TopologyListener.opened"> <code class="descname">opened</code><span class="sig-paren">(</span><em>event</em><span class="sig-paren">)</span><a class="headerlink" href="#pymongo.monitoring.TopologyListener.opened" title="Permalink to this definition">¶</a></dt> <dd><p>Abstract method to handle a <cite>TopologyOpenedEvent</cite>.</p> <table class="docutils field-list" frame="void" rules="none"> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> <li><cite>event</cite>: An instance of <a class="reference internal" href="#pymongo.monitoring.TopologyOpenedEvent" title="pymongo.monitoring.TopologyOpenedEvent"><code class="xref py py-class docutils literal notranslate"><span class="pre">TopologyOpenedEvent</span></code></a>.</li> </ul> </td> </tr> </tbody> </table> </dd></dl> </dd></dl> <dl class="class"> <dt id="pymongo.monitoring.CommandStartedEvent"> <em class="property">class </em><code class="descclassname">pymongo.monitoring.</code><code class="descname">CommandStartedEvent</code><span class="sig-paren">(</span><em>command</em>, <em>database_name</em>, <em>*args</em><span class="sig-paren">)</span><a class="headerlink" href="#pymongo.monitoring.CommandStartedEvent" title="Permalink to this definition">¶</a></dt> <dd><p>Event published when a command starts.</p> <table class="docutils field-list" frame="void" rules="none"> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> <li><cite>command</cite>: The command document.</li> <li><cite>database_name</cite>: The name of the database this command was run against.</li> <li><cite>request_id</cite>: The request id for this operation.</li> <li><cite>connection_id</cite>: The address (host, port) of the server this command was sent to.</li> <li><cite>operation_id</cite>: An optional identifier for a series of related events.</li> </ul> </td> </tr> </tbody> </table> <dl class="attribute"> <dt id="pymongo.monitoring.CommandStartedEvent.command"> <code class="descname">command</code><a class="headerlink" href="#pymongo.monitoring.CommandStartedEvent.command" title="Permalink to this definition">¶</a></dt> <dd><p>The command document.</p> </dd></dl> <dl class="attribute"> <dt id="pymongo.monitoring.CommandStartedEvent.command_name"> <code class="descname">command_name</code><a class="headerlink" href="#pymongo.monitoring.CommandStartedEvent.command_name" title="Permalink to this definition">¶</a></dt> <dd><p>The command name.</p> </dd></dl> <dl class="attribute"> <dt id="pymongo.monitoring.CommandStartedEvent.connection_id"> <code class="descname">connection_id</code><a class="headerlink" href="#pymongo.monitoring.CommandStartedEvent.connection_id" title="Permalink to this definition">¶</a></dt> <dd><p>The address (host, port) of the server this command was sent to.</p> </dd></dl> <dl class="attribute"> <dt id="pymongo.monitoring.CommandStartedEvent.database_name"> <code class="descname">database_name</code><a class="headerlink" href="#pymongo.monitoring.CommandStartedEvent.database_name" title="Permalink to this definition">¶</a></dt> <dd><p>The name of the database this command was run against.</p> </dd></dl> <dl class="attribute"> <dt id="pymongo.monitoring.CommandStartedEvent.operation_id"> <code class="descname">operation_id</code><a class="headerlink" href="#pymongo.monitoring.CommandStartedEvent.operation_id" title="Permalink to this definition">¶</a></dt> <dd><p>An id for this series of events or None.</p> </dd></dl> <dl class="attribute"> <dt id="pymongo.monitoring.CommandStartedEvent.request_id"> <code class="descname">request_id</code><a class="headerlink" href="#pymongo.monitoring.CommandStartedEvent.request_id" title="Permalink to this definition">¶</a></dt> <dd><p>The request id for this operation.</p> </dd></dl> </dd></dl> <dl class="class"> <dt id="pymongo.monitoring.CommandSucceededEvent"> <em class="property">class </em><code class="descclassname">pymongo.monitoring.</code><code class="descname">CommandSucceededEvent</code><span class="sig-paren">(</span><em>duration</em>, <em>reply</em>, <em>command_name</em>, <em>request_id</em>, <em>connection_id</em>, <em>operation_id</em><span class="sig-paren">)</span><a class="headerlink" href="#pymongo.monitoring.CommandSucceededEvent" title="Permalink to this definition">¶</a></dt> <dd><p>Event published when a command succeeds.</p> <table class="docutils field-list" frame="void" rules="none"> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> <li><cite>duration</cite>: The command duration as a datetime.timedelta.</li> <li><cite>reply</cite>: The server reply document.</li> <li><cite>command_name</cite>: The command name.</li> <li><cite>request_id</cite>: The request id for this operation.</li> <li><cite>connection_id</cite>: The address (host, port) of the server this command was sent to.</li> <li><cite>operation_id</cite>: An optional identifier for a series of related events.</li> </ul> </td> </tr> </tbody> </table> <dl class="attribute"> <dt id="pymongo.monitoring.CommandSucceededEvent.command_name"> <code class="descname">command_name</code><a class="headerlink" href="#pymongo.monitoring.CommandSucceededEvent.command_name" title="Permalink to this definition">¶</a></dt> <dd><p>The command name.</p> </dd></dl> <dl class="attribute"> <dt id="pymongo.monitoring.CommandSucceededEvent.connection_id"> <code class="descname">connection_id</code><a class="headerlink" href="#pymongo.monitoring.CommandSucceededEvent.connection_id" title="Permalink to this definition">¶</a></dt> <dd><p>The address (host, port) of the server this command was sent to.</p> </dd></dl> <dl class="attribute"> <dt id="pymongo.monitoring.CommandSucceededEvent.duration_micros"> <code class="descname">duration_micros</code><a class="headerlink" href="#pymongo.monitoring.CommandSucceededEvent.duration_micros" title="Permalink to this definition">¶</a></dt> <dd><p>The duration of this operation in microseconds.</p> </dd></dl> <dl class="attribute"> <dt id="pymongo.monitoring.CommandSucceededEvent.operation_id"> <code class="descname">operation_id</code><a class="headerlink" href="#pymongo.monitoring.CommandSucceededEvent.operation_id" title="Permalink to this definition">¶</a></dt> <dd><p>An id for this series of events or None.</p> </dd></dl> <dl class="attribute"> <dt id="pymongo.monitoring.CommandSucceededEvent.reply"> <code class="descname">reply</code><a class="headerlink" href="#pymongo.monitoring.CommandSucceededEvent.reply" title="Permalink to this definition">¶</a></dt> <dd><p>The server failure document for this operation.</p> </dd></dl> <dl class="attribute"> <dt id="pymongo.monitoring.CommandSucceededEvent.request_id"> <code class="descname">request_id</code><a class="headerlink" href="#pymongo.monitoring.CommandSucceededEvent.request_id" title="Permalink to this definition">¶</a></dt> <dd><p>The request id for this operation.</p> </dd></dl> </dd></dl> <dl class="class"> <dt id="pymongo.monitoring.CommandFailedEvent"> <em class="property">class </em><code class="descclassname">pymongo.monitoring.</code><code class="descname">CommandFailedEvent</code><span class="sig-paren">(</span><em>duration</em>, <em>failure</em>, <em>*args</em><span class="sig-paren">)</span><a class="headerlink" href="#pymongo.monitoring.CommandFailedEvent" title="Permalink to this definition">¶</a></dt> <dd><p>Event published when a command fails.</p> <table class="docutils field-list" frame="void" rules="none"> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> <li><cite>duration</cite>: The command duration as a datetime.timedelta.</li> <li><cite>failure</cite>: The server reply document.</li> <li><cite>command_name</cite>: The command name.</li> <li><cite>request_id</cite>: The request id for this operation.</li> <li><cite>connection_id</cite>: The address (host, port) of the server this command was sent to.</li> <li><cite>operation_id</cite>: An optional identifier for a series of related events.</li> </ul> </td> </tr> </tbody> </table> <dl class="attribute"> <dt id="pymongo.monitoring.CommandFailedEvent.command_name"> <code class="descname">command_name</code><a class="headerlink" href="#pymongo.monitoring.CommandFailedEvent.command_name" title="Permalink to this definition">¶</a></dt> <dd><p>The command name.</p> </dd></dl> <dl class="attribute"> <dt id="pymongo.monitoring.CommandFailedEvent.connection_id"> <code class="descname">connection_id</code><a class="headerlink" href="#pymongo.monitoring.CommandFailedEvent.connection_id" title="Permalink to this definition">¶</a></dt> <dd><p>The address (host, port) of the server this command was sent to.</p> </dd></dl> <dl class="attribute"> <dt id="pymongo.monitoring.CommandFailedEvent.duration_micros"> <code class="descname">duration_micros</code><a class="headerlink" href="#pymongo.monitoring.CommandFailedEvent.duration_micros" title="Permalink to this definition">¶</a></dt> <dd><p>The duration of this operation in microseconds.</p> </dd></dl> <dl class="attribute"> <dt id="pymongo.monitoring.CommandFailedEvent.failure"> <code class="descname">failure</code><a class="headerlink" href="#pymongo.monitoring.CommandFailedEvent.failure" title="Permalink to this definition">¶</a></dt> <dd><p>The server failure document for this operation.</p> </dd></dl> <dl class="attribute"> <dt id="pymongo.monitoring.CommandFailedEvent.operation_id"> <code class="descname">operation_id</code><a class="headerlink" href="#pymongo.monitoring.CommandFailedEvent.operation_id" title="Permalink to this definition">¶</a></dt> <dd><p>An id for this series of events or None.</p> </dd></dl> <dl class="attribute"> <dt id="pymongo.monitoring.CommandFailedEvent.request_id"> <code class="descname">request_id</code><a class="headerlink" href="#pymongo.monitoring.CommandFailedEvent.request_id" title="Permalink to this definition">¶</a></dt> <dd><p>The request id for this operation.</p> </dd></dl> </dd></dl> <dl class="class"> <dt id="pymongo.monitoring.ServerDescriptionChangedEvent"> <em class="property">class </em><code class="descclassname">pymongo.monitoring.</code><code class="descname">ServerDescriptionChangedEvent</code><span class="sig-paren">(</span><em>previous_description</em>, <em>new_description</em>, <em>*args</em><span class="sig-paren">)</span><a class="headerlink" href="#pymongo.monitoring.ServerDescriptionChangedEvent" title="Permalink to this definition">¶</a></dt> <dd><p>Published when server description changes.</p> <div class="versionadded"> <p><span class="versionmodified">New in version 3.3.</span></p> </div> <dl class="attribute"> <dt id="pymongo.monitoring.ServerDescriptionChangedEvent.new_description"> <code class="descname">new_description</code><a class="headerlink" href="#pymongo.monitoring.ServerDescriptionChangedEvent.new_description" title="Permalink to this definition">¶</a></dt> <dd><p>The new <a class="reference internal" href="server_description.html#pymongo.server_description.ServerDescription" title="pymongo.server_description.ServerDescription"><code class="xref py py-class docutils literal notranslate"><span class="pre">ServerDescription</span></code></a>.</p> </dd></dl> <dl class="attribute"> <dt id="pymongo.monitoring.ServerDescriptionChangedEvent.previous_description"> <code class="descname">previous_description</code><a class="headerlink" href="#pymongo.monitoring.ServerDescriptionChangedEvent.previous_description" title="Permalink to this definition">¶</a></dt> <dd><p>The previous <a class="reference internal" href="server_description.html#pymongo.server_description.ServerDescription" title="pymongo.server_description.ServerDescription"><code class="xref py py-class docutils literal notranslate"><span class="pre">ServerDescription</span></code></a>.</p> </dd></dl> <dl class="attribute"> <dt id="pymongo.monitoring.ServerDescriptionChangedEvent.server_address"> <code class="descname">server_address</code><a class="headerlink" href="#pymongo.monitoring.ServerDescriptionChangedEvent.server_address" title="Permalink to this definition">¶</a></dt> <dd><p>The address (host/port pair) of the server</p> </dd></dl> <dl class="attribute"> <dt id="pymongo.monitoring.ServerDescriptionChangedEvent.topology_id"> <code class="descname">topology_id</code><a class="headerlink" href="#pymongo.monitoring.ServerDescriptionChangedEvent.topology_id" title="Permalink to this definition">¶</a></dt> <dd><p>A unique identifier for the topology this server is a part of.</p> </dd></dl> </dd></dl> <dl class="class"> <dt id="pymongo.monitoring.ServerOpeningEvent"> <em class="property">class </em><code class="descclassname">pymongo.monitoring.</code><code class="descname">ServerOpeningEvent</code><span class="sig-paren">(</span><em>server_address</em>, <em>topology_id</em><span class="sig-paren">)</span><a class="headerlink" href="#pymongo.monitoring.ServerOpeningEvent" title="Permalink to this definition">¶</a></dt> <dd><p>Published when server is initialized.</p> <div class="versionadded"> <p><span class="versionmodified">New in version 3.3.</span></p> </div> <dl class="attribute"> <dt id="pymongo.monitoring.ServerOpeningEvent.server_address"> <code class="descname">server_address</code><a class="headerlink" href="#pymongo.monitoring.ServerOpeningEvent.server_address" title="Permalink to this definition">¶</a></dt> <dd><p>The address (host/port pair) of the server</p> </dd></dl> <dl class="attribute"> <dt id="pymongo.monitoring.ServerOpeningEvent.topology_id"> <code class="descname">topology_id</code><a class="headerlink" href="#pymongo.monitoring.ServerOpeningEvent.topology_id" title="Permalink to this definition">¶</a></dt> <dd><p>A unique identifier for the topology this server is a part of.</p> </dd></dl> </dd></dl> <dl class="class"> <dt id="pymongo.monitoring.ServerClosedEvent"> <em class="property">class </em><code class="descclassname">pymongo.monitoring.</code><code class="descname">ServerClosedEvent</code><span class="sig-paren">(</span><em>server_address</em>, <em>topology_id</em><span class="sig-paren">)</span><a class="headerlink" href="#pymongo.monitoring.ServerClosedEvent" title="Permalink to this definition">¶</a></dt> <dd><p>Published when server is closed.</p> <div class="versionadded"> <p><span class="versionmodified">New in version 3.3.</span></p> </div> <dl class="attribute"> <dt id="pymongo.monitoring.ServerClosedEvent.server_address"> <code class="descname">server_address</code><a class="headerlink" href="#pymongo.monitoring.ServerClosedEvent.server_address" title="Permalink to this definition">¶</a></dt> <dd><p>The address (host/port pair) of the server</p> </dd></dl> <dl class="attribute"> <dt id="pymongo.monitoring.ServerClosedEvent.topology_id"> <code class="descname">topology_id</code><a class="headerlink" href="#pymongo.monitoring.ServerClosedEvent.topology_id" title="Permalink to this definition">¶</a></dt> <dd><p>A unique identifier for the topology this server is a part of.</p> </dd></dl> </dd></dl> <dl class="class"> <dt id="pymongo.monitoring.TopologyDescriptionChangedEvent"> <em class="property">class </em><code class="descclassname">pymongo.monitoring.</code><code class="descname">TopologyDescriptionChangedEvent</code><span class="sig-paren">(</span><em>previous_description</em>, <em>new_description</em>, <em>*args</em><span class="sig-paren">)</span><a class="headerlink" href="#pymongo.monitoring.TopologyDescriptionChangedEvent" title="Permalink to this definition">¶</a></dt> <dd><p>Published when the topology description changes.</p> <div class="versionadded"> <p><span class="versionmodified">New in version 3.3.</span></p> </div> <dl class="attribute"> <dt id="pymongo.monitoring.TopologyDescriptionChangedEvent.new_description"> <code class="descname">new_description</code><a class="headerlink" href="#pymongo.monitoring.TopologyDescriptionChangedEvent.new_description" title="Permalink to this definition">¶</a></dt> <dd><p>The new <a class="reference internal" href="topology_description.html#pymongo.topology_description.TopologyDescription" title="pymongo.topology_description.TopologyDescription"><code class="xref py py-class docutils literal notranslate"><span class="pre">TopologyDescription</span></code></a>.</p> </dd></dl> <dl class="attribute"> <dt id="pymongo.monitoring.TopologyDescriptionChangedEvent.previous_description"> <code class="descname">previous_description</code><a class="headerlink" href="#pymongo.monitoring.TopologyDescriptionChangedEvent.previous_description" title="Permalink to this definition">¶</a></dt> <dd><p>The previous <a class="reference internal" href="topology_description.html#pymongo.topology_description.TopologyDescription" title="pymongo.topology_description.TopologyDescription"><code class="xref py py-class docutils literal notranslate"><span class="pre">TopologyDescription</span></code></a>.</p> </dd></dl> <dl class="attribute"> <dt id="pymongo.monitoring.TopologyDescriptionChangedEvent.topology_id"> <code class="descname">topology_id</code><a class="headerlink" href="#pymongo.monitoring.TopologyDescriptionChangedEvent.topology_id" title="Permalink to this definition">¶</a></dt> <dd><p>A unique identifier for the topology this server is a part of.</p> </dd></dl> </dd></dl> <dl class="class"> <dt id="pymongo.monitoring.TopologyOpenedEvent"> <em class="property">class </em><code class="descclassname">pymongo.monitoring.</code><code class="descname">TopologyOpenedEvent</code><span class="sig-paren">(</span><em>topology_id</em><span class="sig-paren">)</span><a class="headerlink" href="#pymongo.monitoring.TopologyOpenedEvent" title="Permalink to this definition">¶</a></dt> <dd><p>Published when the topology is initialized.</p> <div class="versionadded"> <p><span class="versionmodified">New in version 3.3.</span></p> </div> <dl class="attribute"> <dt id="pymongo.monitoring.TopologyOpenedEvent.topology_id"> <code class="descname">topology_id</code><a class="headerlink" href="#pymongo.monitoring.TopologyOpenedEvent.topology_id" title="Permalink to this definition">¶</a></dt> <dd><p>A unique identifier for the topology this server is a part of.</p> </dd></dl> </dd></dl> <dl class="class"> <dt id="pymongo.monitoring.TopologyClosedEvent"> <em class="property">class </em><code class="descclassname">pymongo.monitoring.</code><code class="descname">TopologyClosedEvent</code><span class="sig-paren">(</span><em>topology_id</em><span class="sig-paren">)</span><a class="headerlink" href="#pymongo.monitoring.TopologyClosedEvent" title="Permalink to this definition">¶</a></dt> <dd><p>Published when the topology is closed.</p> <div class="versionadded"> <p><span class="versionmodified">New in version 3.3.</span></p> </div> <dl class="attribute"> <dt id="pymongo.monitoring.TopologyClosedEvent.topology_id"> <code class="descname">topology_id</code><a class="headerlink" href="#pymongo.monitoring.TopologyClosedEvent.topology_id" title="Permalink to this definition">¶</a></dt> <dd><p>A unique identifier for the topology this server is a part of.</p> </dd></dl> </dd></dl> <dl class="class"> <dt id="pymongo.monitoring.ServerHeartbeatStartedEvent"> <em class="property">class </em><code class="descclassname">pymongo.monitoring.</code><code class="descname">ServerHeartbeatStartedEvent</code><span class="sig-paren">(</span><em>connection_id</em><span class="sig-paren">)</span><a class="headerlink" href="#pymongo.monitoring.ServerHeartbeatStartedEvent" title="Permalink to this definition">¶</a></dt> <dd><p>Published when a heartbeat is started.</p> <div class="versionadded"> <p><span class="versionmodified">New in version 3.3.</span></p> </div> <dl class="attribute"> <dt id="pymongo.monitoring.ServerHeartbeatStartedEvent.connection_id"> <code class="descname">connection_id</code><a class="headerlink" href="#pymongo.monitoring.ServerHeartbeatStartedEvent.connection_id" title="Permalink to this definition">¶</a></dt> <dd><p>The address (host, port) of the server this heartbeat was sent to.</p> </dd></dl> </dd></dl> <dl class="class"> <dt id="pymongo.monitoring.ServerHeartbeatSucceededEvent"> <em class="property">class </em><code class="descclassname">pymongo.monitoring.</code><code class="descname">ServerHeartbeatSucceededEvent</code><span class="sig-paren">(</span><em>duration</em>, <em>reply</em>, <em>*args</em><span class="sig-paren">)</span><a class="headerlink" href="#pymongo.monitoring.ServerHeartbeatSucceededEvent" title="Permalink to this definition">¶</a></dt> <dd><p>Fired when the server heartbeat succeeds.</p> <div class="versionadded"> <p><span class="versionmodified">New in version 3.3.</span></p> </div> <dl class="attribute"> <dt id="pymongo.monitoring.ServerHeartbeatSucceededEvent.connection_id"> <code class="descname">connection_id</code><a class="headerlink" href="#pymongo.monitoring.ServerHeartbeatSucceededEvent.connection_id" title="Permalink to this definition">¶</a></dt> <dd><p>The address (host, port) of the server this heartbeat was sent to.</p> </dd></dl> <dl class="attribute"> <dt id="pymongo.monitoring.ServerHeartbeatSucceededEvent.duration"> <code class="descname">duration</code><a class="headerlink" href="#pymongo.monitoring.ServerHeartbeatSucceededEvent.duration" title="Permalink to this definition">¶</a></dt> <dd><p>The duration of this heartbeat in microseconds.</p> </dd></dl> <dl class="attribute"> <dt id="pymongo.monitoring.ServerHeartbeatSucceededEvent.reply"> <code class="descname">reply</code><a class="headerlink" href="#pymongo.monitoring.ServerHeartbeatSucceededEvent.reply" title="Permalink to this definition">¶</a></dt> <dd><p>An instance of <a class="reference internal" href="ismaster.html#pymongo.ismaster.IsMaster" title="pymongo.ismaster.IsMaster"><code class="xref py py-class docutils literal notranslate"><span class="pre">IsMaster</span></code></a>.</p> </dd></dl> </dd></dl> <dl class="class"> <dt id="pymongo.monitoring.ServerHeartbeatFailedEvent"> <em class="property">class </em><code class="descclassname">pymongo.monitoring.</code><code class="descname">ServerHeartbeatFailedEvent</code><span class="sig-paren">(</span><em>duration</em>, <em>reply</em>, <em>*args</em><span class="sig-paren">)</span><a class="headerlink" href="#pymongo.monitoring.ServerHeartbeatFailedEvent" title="Permalink to this definition">¶</a></dt> <dd><p>Fired when the server heartbeat fails, either with an “ok: 0” or a socket exception.</p> <div class="versionadded"> <p><span class="versionmodified">New in version 3.3.</span></p> </div> <dl class="attribute"> <dt id="pymongo.monitoring.ServerHeartbeatFailedEvent.connection_id"> <code class="descname">connection_id</code><a class="headerlink" href="#pymongo.monitoring.ServerHeartbeatFailedEvent.connection_id" title="Permalink to this definition">¶</a></dt> <dd><p>The address (host, port) of the server this heartbeat was sent to.</p> </dd></dl> <dl class="attribute"> <dt id="pymongo.monitoring.ServerHeartbeatFailedEvent.duration"> <code class="descname">duration</code><a class="headerlink" href="#pymongo.monitoring.ServerHeartbeatFailedEvent.duration" title="Permalink to this definition">¶</a></dt> <dd><p>The duration of this heartbeat in microseconds.</p> </dd></dl> <dl class="attribute"> <dt id="pymongo.monitoring.ServerHeartbeatFailedEvent.reply"> <code class="descname">reply</code><a class="headerlink" href="#pymongo.monitoring.ServerHeartbeatFailedEvent.reply" title="Permalink to this definition">¶</a></dt> <dd><p>A subclass of <code class="xref py py-exc docutils literal notranslate"><span class="pre">Exception</span></code>.</p> </dd></dl> </dd></dl> </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="mongo_replica_set_client.html" title="previous chapter"><code class="docutils literal notranslate"><span class="pre">mongo_replica_set_client</span></code> – Tools for connecting to a MongoDB replica set</a></p> <h4>Next topic</h4> <p class="topless"><a href="operations.html" title="next chapter"><code class="docutils literal notranslate"><span class="pre">operations</span></code> – Operation class definitions</a></p> <div role="note" aria-label="source link"> <h3>This Page</h3> <ul class="this-page-menu"> <li><a href="../../_sources/api/pymongo/monitoring.rst.txt" rel="nofollow">Show Source</a></li> </ul> </div> <div id="searchbox" style="display: none" role="search"> <h3>Quick search</h3> <div class="searchformwrapper"> <form class="search" action="../../search.html" method="get"> <input type="text" name="q" /> <input type="submit" value="Go" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </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="operations.html" title="operations – Operation class definitions" >next</a> |</li> <li class="right" > <a href="mongo_replica_set_client.html" title="mongo_replica_set_client – Tools for connecting to a MongoDB replica set" >previous</a> |</li> <li class="nav-item nav-item-0"><a href="../../index.html">PyMongo 3.7.2 documentation</a> »</li> <li class="nav-item nav-item-1"><a href="../index.html" >API Documentation</a> »</li> <li class="nav-item nav-item-2"><a href="index.html" ><code class="docutils literal notranslate"><span class="pre">pymongo</span></code> – Python driver for MongoDB</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>