aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--_sources/protocol.txt2
-rw-r--r--contributing.html14
-rw-r--r--index.html5
-rw-r--r--protocol.html63
-rw-r--r--searchindex.js2
5 files changed, 40 insertions, 46 deletions
diff --git a/_sources/protocol.txt b/_sources/protocol.txt
index 35b541f..d7bc01d 100644
--- a/_sources/protocol.txt
+++ b/_sources/protocol.txt
@@ -1,4 +1,4 @@
1/****************************e 1******************************
2EventMQ Protocol Specification 2EventMQ Protocol Specification
3****************************** 3******************************
4*The status of this document is alpha and subject to heavy change* 4*The status of this document is alpha and subject to heavy change*
diff --git a/contributing.html b/contributing.html
index acdb2b0..79d9616 100644
--- a/contributing.html
+++ b/contributing.html
@@ -31,7 +31,7 @@
31 31
32 32
33 <link rel="top" title="EventMQ 0 documentation" href="index.html"/> 33 <link rel="top" title="EventMQ 0 documentation" href="index.html"/>
34 <link rel="next" title="Goals" href="protocol.html"/> 34 <link rel="next" title="EventMQ Protocol Specification" href="protocol.html"/>
35 <link rel="prev" title="timeutils – Time Utilites" href="utils/timeutils.html"/> 35 <link rel="prev" title="timeutils – Time Utilites" href="utils/timeutils.html"/>
36 36
37 37
@@ -84,10 +84,7 @@
84 <ul class="current"> 84 <ul class="current">
85<li class="toctree-l1"><a class="reference internal" href="api.html">API Documentation</a></li> 85<li class="toctree-l1"><a class="reference internal" href="api.html">API Documentation</a></li>
86<li class="toctree-l1 current"><a class="current reference internal" href="">Contributing to EventMQ</a><ul> 86<li class="toctree-l1 current"><a class="current reference internal" href="">Contributing to EventMQ</a><ul>
87<li class="toctree-l2"><a class="reference internal" href="protocol.html">Goals</a></li> 87<li class="toctree-l2"><a class="reference internal" href="protocol.html">EventMQ Protocol Specification</a></li>
88<li class="toctree-l2"><a class="reference internal" href="protocol.html#license">License</a></li>
89<li class="toctree-l2"><a class="reference internal" href="protocol.html#language">Language</a></li>
90<li class="toctree-l2"><a class="reference internal" href="protocol.html#architecture">Architecture</a></li>
91<li class="toctree-l2"><a class="reference external" href="https://github.com/enderlabs/eventmq">Source Code</a></li> 88<li class="toctree-l2"><a class="reference external" href="https://github.com/enderlabs/eventmq">Source Code</a></li>
92<li class="toctree-l2"><a class="reference external" href="https://github.com/enderlabs/eventmq/issues">Issues</a></li> 89<li class="toctree-l2"><a class="reference external" href="https://github.com/enderlabs/eventmq/issues">Issues</a></li>
93</ul> 90</ul>
@@ -146,10 +143,7 @@
146</div></blockquote> 143</div></blockquote>
147<div class="toctree-wrapper compound"> 144<div class="toctree-wrapper compound">
148<ul> 145<ul>
149<li class="toctree-l1"><a class="reference internal" href="protocol.html">Goals</a></li> 146<li class="toctree-l1"><a class="reference internal" href="protocol.html">EventMQ Protocol Specification</a></li>
150<li class="toctree-l1"><a class="reference internal" href="protocol.html#license">License</a></li>
151<li class="toctree-l1"><a class="reference internal" href="protocol.html#language">Language</a></li>
152<li class="toctree-l1"><a class="reference internal" href="protocol.html#architecture">Architecture</a></li>
153<li class="toctree-l1"><a class="reference external" href="https://github.com/enderlabs/eventmq">Source Code</a></li> 147<li class="toctree-l1"><a class="reference external" href="https://github.com/enderlabs/eventmq">Source Code</a></li>
154<li class="toctree-l1"><a class="reference external" href="https://github.com/enderlabs/eventmq/issues">Issues</a></li> 148<li class="toctree-l1"><a class="reference external" href="https://github.com/enderlabs/eventmq/issues">Issues</a></li>
155</ul> 149</ul>
@@ -163,7 +157,7 @@
163 157
164 <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> 158 <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
165 159
166 <a href="protocol.html" class="btn btn-neutral float-right" title="Goals" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a> 160 <a href="protocol.html" class="btn btn-neutral float-right" title="EventMQ Protocol Specification" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
167 161
168 162
169 <a href="utils/timeutils.html" class="btn btn-neutral" title="timeutils – Time Utilites" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a> 163 <a href="utils/timeutils.html" class="btn btn-neutral" title="timeutils – Time Utilites" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
diff --git a/index.html b/index.html
index d806a1e..87da31e 100644
--- a/index.html
+++ b/index.html
@@ -143,10 +143,7 @@
143</ul> 143</ul>
144</li> 144</li>
145<li class="toctree-l1"><a class="reference internal" href="contributing.html">Contributing to EventMQ</a><ul> 145<li class="toctree-l1"><a class="reference internal" href="contributing.html">Contributing to EventMQ</a><ul>
146<li class="toctree-l2"><a class="reference internal" href="protocol.html">Goals</a></li> 146<li class="toctree-l2"><a class="reference internal" href="protocol.html">EventMQ Protocol Specification</a></li>
147<li class="toctree-l2"><a class="reference internal" href="protocol.html#license">License</a></li>
148<li class="toctree-l2"><a class="reference internal" href="protocol.html#language">Language</a></li>
149<li class="toctree-l2"><a class="reference internal" href="protocol.html#architecture">Architecture</a></li>
150<li class="toctree-l2"><a class="reference external" href="https://github.com/enderlabs/eventmq">Source Code</a></li> 147<li class="toctree-l2"><a class="reference external" href="https://github.com/enderlabs/eventmq">Source Code</a></li>
151<li class="toctree-l2"><a class="reference external" href="https://github.com/enderlabs/eventmq/issues">Issues</a></li> 148<li class="toctree-l2"><a class="reference external" href="https://github.com/enderlabs/eventmq/issues">Issues</a></li>
152</ul> 149</ul>
diff --git a/protocol.html b/protocol.html
index d1d24f4..22906fa 100644
--- a/protocol.html
+++ b/protocol.html
@@ -8,7 +8,7 @@
8 8
9 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 9 <meta name="viewport" content="width=device-width, initial-scale=1.0">
10 10
11 <title>Goals &mdash; EventMQ 0 documentation</title> 11 <title>EventMQ Protocol Specification &mdash; EventMQ 0 documentation</title>
12 12
13 13
14 14
@@ -84,18 +84,21 @@
84 <ul class="current"> 84 <ul class="current">
85<li class="toctree-l1"><a class="reference internal" href="api.html">API Documentation</a></li> 85<li class="toctree-l1"><a class="reference internal" href="api.html">API Documentation</a></li>
86<li class="toctree-l1 current"><a class="reference internal" href="contributing.html">Contributing to EventMQ</a><ul class="current"> 86<li class="toctree-l1 current"><a class="reference internal" href="contributing.html">Contributing to EventMQ</a><ul class="current">
87<li class="toctree-l2 current"><a class="current reference internal" href="">Goals</a></li> 87<li class="toctree-l2 current"><a class="current reference internal" href="">EventMQ Protocol Specification</a><ul>
88<li class="toctree-l2"><a class="reference internal" href="#license">License</a></li> 88<li class="toctree-l3"><a class="reference internal" href="#goals">Goals</a></li>
89<li class="toctree-l2"><a class="reference internal" href="#language">Language</a></li> 89<li class="toctree-l3"><a class="reference internal" href="#license">License</a></li>
90<li class="toctree-l2"><a class="reference internal" href="#architecture">Architecture</a><ul> 90<li class="toctree-l3"><a class="reference internal" href="#language">Language</a></li>
91<li class="toctree-l3"><a class="reference internal" href="#topology">Topology</a></li> 91<li class="toctree-l3"><a class="reference internal" href="#architecture">Architecture</a><ul>
92<li class="toctree-l3"><a class="reference internal" href="#router-addressing">ROUTER Addressing</a></li> 92<li class="toctree-l4"><a class="reference internal" href="#topology">Topology</a></li>
93<li class="toctree-l3"><a class="reference internal" href="#global-frames">Global Frames</a></li> 93<li class="toctree-l4"><a class="reference internal" href="#router-addressing">ROUTER Addressing</a></li>
94<li class="toctree-l3"><a class="reference internal" href="#emqp-client">eMQP / Client</a></li> 94<li class="toctree-l4"><a class="reference internal" href="#global-frames">Global Frames</a></li>
95<li class="toctree-l3"><a class="reference internal" href="#emqp-scheduler">eMQP / Scheduler</a></li> 95<li class="toctree-l4"><a class="reference internal" href="#emqp-client">eMQP / Client</a></li>
96<li class="toctree-l3"><a class="reference internal" href="#emqp-worker">eMQP / Worker</a></li> 96<li class="toctree-l4"><a class="reference internal" href="#emqp-scheduler">eMQP / Scheduler</a></li>
97<li class="toctree-l3"><a class="reference internal" href="#heartbeating">Heartbeating</a></li> 97<li class="toctree-l4"><a class="reference internal" href="#emqp-worker">eMQP / Worker</a></li>
98<li class="toctree-l3"><a class="reference internal" href="#request-headers">REQUEST Headers</a></li> 98<li class="toctree-l4"><a class="reference internal" href="#heartbeating">Heartbeating</a></li>
99<li class="toctree-l4"><a class="reference internal" href="#request-headers">REQUEST Headers</a></li>
100</ul>
101</li>
99</ul> 102</ul>
100</li> 103</li>
101<li class="toctree-l2"><a class="reference external" href="https://github.com/enderlabs/eventmq">Source Code</a></li> 104<li class="toctree-l2"><a class="reference external" href="https://github.com/enderlabs/eventmq">Source Code</a></li>
@@ -134,7 +137,7 @@
134 137
135 <li><a href="contributing.html">Contributing to EventMQ</a> &raquo;</li> 138 <li><a href="contributing.html">Contributing to EventMQ</a> &raquo;</li>
136 139
137 <li>Goals</li> 140 <li>EventMQ Protocol Specification</li>
138 <li class="wy-breadcrumbs-aside"> 141 <li class="wy-breadcrumbs-aside">
139 142
140 143
@@ -148,12 +151,11 @@
148 <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> 151 <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
149 <div itemprop="articleBody"> 152 <div itemprop="articleBody">
150 153
151 <p>/<strong>**************************e 154 <div class="section" id="eventmq-protocol-specification">
152EventMQ Protocol Specification 155<h1>EventMQ Protocol Specification<a class="headerlink" href="#eventmq-protocol-specification" title="Permalink to this headline">¶</a></h1>
153****************************</strong> 156<p><em>The status of this document is alpha and subject to heavy change</em></p>
154<em>The status of this document is alpha and subject to heavy change</em></p>
155<div class="section" id="goals"> 157<div class="section" id="goals">
156<h1>Goals<a class="headerlink" href="#goals" title="Permalink to this headline">¶</a></h1> 158<h2>Goals<a class="headerlink" href="#goals" title="Permalink to this headline">¶</a></h2>
157<p>The EventMQ Protocol (eMQP) defines a reliable service-oriented request-reply and pub-sub dialog between a set of clients, a broker, and a set of workers. This goal is to</p> 159<p>The EventMQ Protocol (eMQP) defines a reliable service-oriented request-reply and pub-sub dialog between a set of clients, a broker, and a set of workers. This goal is to</p>
158<p>The goals are to:</p> 160<p>The goals are to:</p>
159<blockquote> 161<blockquote>
@@ -166,32 +168,32 @@ EventMQ Protocol Specification
166</div></blockquote> 168</div></blockquote>
167</div> 169</div>
168<div class="section" id="license"> 170<div class="section" id="license">
169<h1>License<a class="headerlink" href="#license" title="Permalink to this headline">¶</a></h1> 171<h2>License<a class="headerlink" href="#license" title="Permalink to this headline">¶</a></h2>
170<p>This Specification is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 2.1 of the License, or (at your option) any later version.</p> 172<p>This Specification is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 2.1 of the License, or (at your option) any later version.</p>
171<p>This Specification is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.</p> 173<p>This Specification is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.</p>
172</div> 174</div>
173<div class="section" id="language"> 175<div class="section" id="language">
174<h1>Language<a class="headerlink" href="#language" title="Permalink to this headline">¶</a></h1> 176<h2>Language<a class="headerlink" href="#language" title="Permalink to this headline">¶</a></h2>
175<p>The key words &#8220;MUST&#8221;, &#8220;MUST NOT&#8221;, &#8220;REQUIRED&#8221;, &#8220;SHALL&#8221;, &#8220;SHALL NOT&#8221;, &#8220;SHOULD&#8221;, &#8220;SHOULD NOT&#8221;, &#8220;RECOMMENDED&#8221;, &#8220;MAY&#8221;, and &#8220;OPTIONAL&#8221; in this document are to be interpreted as described in RFC 2119[[1](<a class="reference external" href="http://tools.ietf.org/html/rfc2119">http://tools.ietf.org/html/rfc2119</a>)].</p> 177<p>The key words &#8220;MUST&#8221;, &#8220;MUST NOT&#8221;, &#8220;REQUIRED&#8221;, &#8220;SHALL&#8221;, &#8220;SHALL NOT&#8221;, &#8220;SHOULD&#8221;, &#8220;SHOULD NOT&#8221;, &#8220;RECOMMENDED&#8221;, &#8220;MAY&#8221;, and &#8220;OPTIONAL&#8221; in this document are to be interpreted as described in RFC 2119[[1](<a class="reference external" href="http://tools.ietf.org/html/rfc2119">http://tools.ietf.org/html/rfc2119</a>)].</p>
176</div> 178</div>
177<div class="section" id="architecture"> 179<div class="section" id="architecture">
178<h1>Architecture<a class="headerlink" href="#architecture" title="Permalink to this headline">¶</a></h1> 180<h2>Architecture<a class="headerlink" href="#architecture" title="Permalink to this headline">¶</a></h2>
179<p>insert pretty picture here</p> 181<p>insert pretty picture here</p>
180<div class="section" id="topology"> 182<div class="section" id="topology">
181<h2>Topology<a class="headerlink" href="#topology" title="Permalink to this headline">¶</a></h2> 183<h3>Topology<a class="headerlink" href="#topology" title="Permalink to this headline">¶</a></h3>
182<p>eMQP connects a set of client applications (e.g. web servers), a broker, and a pool of workers. Clients connect to the broker as well as the workers.</p> 184<p>eMQP connects a set of client applications (e.g. web servers), a broker, and a pool of workers. Clients connect to the broker as well as the workers.</p>
183<p>&#8216;Clients&#8217; is defined as application issuing requests and &#8216;workers&#8217; as applications that process these requests. (Workers consist of a <cite>JobManager</cite> and a pool of <cite>Worker</cite> resources where the job executes.)</p> 185<p>&#8216;Clients&#8217; is defined as application issuing requests and &#8216;workers&#8217; as applications that process these requests. (Workers consist of a <cite>JobManager</cite> and a pool of <cite>Worker</cite> resources where the job executes.)</p>
184<p>The EventMQ broker handles a set of named queues. The broker SHOULD serve clients on a fair request and MAY deliver requests to workers on any basis, including 0MQ&#8217;s built-in round robin or least-recently used.</p> 186<p>The EventMQ broker handles a set of named queues. The broker SHOULD serve clients on a fair request and MAY deliver requests to workers on any basis, including 0MQ&#8217;s built-in round robin or least-recently used.</p>
185</div> 187</div>
186<div class="section" id="router-addressing"> 188<div class="section" id="router-addressing">
187<h2>ROUTER Addressing<a class="headerlink" href="#router-addressing" title="Permalink to this headline">¶</a></h2> 189<h3>ROUTER Addressing<a class="headerlink" href="#router-addressing" title="Permalink to this headline">¶</a></h3>
188<p>In the case of request-reply, the broker MUST use a ROUTER socket to accept requests from both clients and workers. The broker MAY use a seperate socket implementing a subset of eMQP, or MAY use a single socket implementing all of eMQP.</p> 190<p>In the case of request-reply, the broker MUST use a ROUTER socket to accept requests from both clients and workers. The broker MAY use a seperate socket implementing a subset of eMQP, or MAY use a single socket implementing all of eMQP.</p>
189<p>From the 0MQ manual[[2](<a class="reference external" href="http://api.zeromq.org/master:zmq-socket">http://api.zeromq.org/master:zmq-socket</a>)] 191<p>From the 0MQ manual[[2](<a class="reference external" href="http://api.zeromq.org/master:zmq-socket">http://api.zeromq.org/master:zmq-socket</a>)]
190&gt; When receiving messages a ROUTER socket shall prepend a message part containing the identity of the originating peer to the message before passing it to the application. When sending messages a ROUTER socket shall remove the first part of the message and use it to determine the identity of the peer the message shall be routed to.</p> 192&gt; When receiving messages a ROUTER socket shall prepend a message part containing the identity of the originating peer to the message before passing it to the application. When sending messages a ROUTER socket shall remove the first part of the message and use it to determine the identity of the peer the message shall be routed to.</p>
191<p>This extra frame is not shown in the specifications below.</p> 193<p>This extra frame is not shown in the specifications below.</p>
192</div> 194</div>
193<div class="section" id="global-frames"> 195<div class="section" id="global-frames">
194<h2>Global Frames<a class="headerlink" href="#global-frames" title="Permalink to this headline">¶</a></h2> 196<h3>Global Frames<a class="headerlink" href="#global-frames" title="Permalink to this headline">¶</a></h3>
195<p>An <strong>ACK</strong> command consists of a 4-frame multipart message, formatted as follows.</p> 197<p>An <strong>ACK</strong> command consists of a 4-frame multipart message, formatted as follows.</p>
196<table border="1" class="docutils"> 198<table border="1" class="docutils">
197<colgroup> 199<colgroup>
@@ -230,7 +232,7 @@ EventMQ Protocol Specification
230</table> 232</table>
231</div> 233</div>
232<div class="section" id="emqp-client"> 234<div class="section" id="emqp-client">
233<h2>eMQP / Client<a class="headerlink" href="#emqp-client" title="Permalink to this headline">¶</a></h2> 235<h3>eMQP / Client<a class="headerlink" href="#emqp-client" title="Permalink to this headline">¶</a></h3>
234<p>A <strong>REQUEST</strong> command consists of a 7-frame multipart message, formatted as follows.</p> 236<p>A <strong>REQUEST</strong> command consists of a 7-frame multipart message, formatted as follows.</p>
235<table border="1" class="docutils"> 237<table border="1" class="docutils">
236<colgroup> 238<colgroup>
@@ -409,7 +411,7 @@ EventMQ Protocol Specification
409</table> 411</table>
410</div> 412</div>
411<div class="section" id="emqp-scheduler"> 413<div class="section" id="emqp-scheduler">
412<h2>eMQP / Scheduler<a class="headerlink" href="#emqp-scheduler" title="Permalink to this headline">¶</a></h2> 414<h3>eMQP / Scheduler<a class="headerlink" href="#emqp-scheduler" title="Permalink to this headline">¶</a></h3>
413<p>An <strong>INFORM</strong> command consists of a 6-frame multipart message, formatted as follows.</p> 415<p>An <strong>INFORM</strong> command consists of a 6-frame multipart message, formatted as follows.</p>
414<table border="1" class="docutils"> 416<table border="1" class="docutils">
415<colgroup> 417<colgroup>
@@ -452,7 +454,7 @@ EventMQ Protocol Specification
452</table> 454</table>
453</div> 455</div>
454<div class="section" id="emqp-worker"> 456<div class="section" id="emqp-worker">
455<h2>eMQP / Worker<a class="headerlink" href="#emqp-worker" title="Permalink to this headline">¶</a></h2> 457<h3>eMQP / Worker<a class="headerlink" href="#emqp-worker" title="Permalink to this headline">¶</a></h3>
456<p>An <strong>INFORM</strong> command consists of a 5-frame multipart message, formatted as follows.</p> 458<p>An <strong>INFORM</strong> command consists of a 5-frame multipart message, formatted as follows.</p>
457<table border="1" class="docutils"> 459<table border="1" class="docutils">
458<colgroup> 460<colgroup>
@@ -631,7 +633,7 @@ EventMQ Protocol Specification
631</table> 633</table>
632</div> 634</div>
633<div class="section" id="heartbeating"> 635<div class="section" id="heartbeating">
634<h2>Heartbeating<a class="headerlink" href="#heartbeating" title="Permalink to this headline">¶</a></h2> 636<h3>Heartbeating<a class="headerlink" href="#heartbeating" title="Permalink to this headline">¶</a></h3>
635<blockquote> 637<blockquote>
636<div><ul class="simple"> 638<div><ul class="simple">
637<li>HEARTBEAT commands are valid at any time after an INFORM command</li> 639<li>HEARTBEAT commands are valid at any time after an INFORM command</li>
@@ -646,7 +648,7 @@ EventMQ Protocol Specification
646</div></blockquote> 648</div></blockquote>
647</div> 649</div>
648<div class="section" id="request-headers"> 650<div class="section" id="request-headers">
649<h2>REQUEST Headers<a class="headerlink" href="#request-headers" title="Permalink to this headline">¶</a></h2> 651<h3>REQUEST Headers<a class="headerlink" href="#request-headers" title="Permalink to this headline">¶</a></h3>
650<p>Headers MUST be 0 to many comma seperated values inserted into the header field. If there are no headers required, send an empty string MUST be sent where headers are required.</p> 652<p>Headers MUST be 0 to many comma seperated values inserted into the header field. If there are no headers required, send an empty string MUST be sent where headers are required.</p>
651<p>Below is a table which defines and describes the headers.</p> 653<p>Below is a table which defines and describes the headers.</p>
652<table border="1" class="docutils"> 654<table border="1" class="docutils">
@@ -688,6 +690,7 @@ EventMQ Protocol Specification
688</table> 690</table>
689</div> 691</div>
690</div> 692</div>
693</div>
691 694
692 695
693 </div> 696 </div>
diff --git a/searchindex.js b/searchindex.js
index 935688d..4f827de 100644
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
Search.setIndex({envversion:46,filenames:["api","client","client/messages","contributing","exceptions","index","jobmanager","poller","protocol","receiver","router","sender","utils","utils/classes","utils/messages","utils/timeutils"],objects:{"eventmq.client":{messages:[2,0,0,"-"]},"eventmq.client.messages":{build_module_path:[2,2,1,""],defer_job:[2,2,1,""],job:[2,2,1,""],send_request:[2,2,1,""]},"eventmq.exceptions":{EventMQError:[4,5,1,""],InvalidMessageError:[4,5,1,""],MessageError:[4,5,1,""],PeerGoneAwayError:[4,5,1,""]},"eventmq.jobmanager":{JobManager:[6,4,1,""]},"eventmq.jobmanager.JobManager":{"__init__":[6,3,1,""],active_jobs:[6,1,1,""],available_workers:[6,1,1,""],incoming:[6,1,1,""],jobmanager_main:[6,3,1,""],name:[6,1,1,""],on_ack:[6,3,1,""],on_heartbeat:[6,3,1,""],on_request:[6,3,1,""],process_message:[6,3,1,""],reset:[6,3,1,""],send_inform:[6,3,1,""],send_ready:[6,3,1,""],start:[6,3,1,""]},"eventmq.poller":{Poller:[7,4,1,""]},"eventmq.poller.Poller":{"__init__":[7,3,1,""],poll:[7,3,1,""],register:[7,3,1,""],unregister:[7,3,1,""]},"eventmq.receiver":{Receiver:[9,4,1,""]},"eventmq.receiver.Receiver":{"__init__":[9,3,1,""],connect:[9,3,1,""],listen:[9,3,1,""],name:[9,1,1,""],ready:[9,1,1,""],unbind:[9,3,1,""],zcontext:[9,1,1,""],zsocket:[9,1,1,""]},"eventmq.router":{Router:[10,4,1,""]},"eventmq.router.Router":{add_worker:[10,3,1,""],clean_up_dead_workers:[10,3,1,""],on_heartbeat:[10,3,1,""],on_inform:[10,3,1,""],on_ready:[10,3,1,""],on_receive_request:[10,3,1,""],process_worker_message:[10,3,1,""],queue_message:[10,3,1,""],queues:[10,1,1,""],requeue_worker:[10,3,1,""],router_main:[10,3,1,""],send_ack:[10,3,1,""],send_heartbeat:[10,3,1,""],send_workers_heartbeats:[10,3,1,""],start:[10,3,1,""],waiting_messages:[10,1,1,""],workers:[10,1,1,""]},"eventmq.sender":{Sender:[11,4,1,""]},"eventmq.sender.Sender":{"__init__":[11,3,1,""],connect:[11,3,1,""],listen:[11,3,1,""],name:[11,1,1,""],ready:[11,1,1,""],rebuild:[11,3,1,""],unbind:[11,3,1,""],zcontext:[11,1,1,""],zsocket:[11,1,1,""]},"eventmq.utils":{classes:[13,0,0,"-"],messages:[14,0,0,"-"],random_characters:[12,2,1,""],timeutils:[15,0,0,"-"]},"eventmq.utils.classes":{HeartbeatMixin:[13,4,1,""],ZMQReceiveMixin:[13,4,1,""],ZMQSendMixin:[13,4,1,""]},"eventmq.utils.classes.HeartbeatMixin":{"__init__":[13,3,1,""],"__weakref__":[13,1,1,""],is_dead:[13,3,1,""],reset_heartbeat_counters:[13,3,1,""],send_heartbeat:[13,3,1,""]},"eventmq.utils.classes.ZMQReceiveMixin":{"__weakref__":[13,1,1,""],recv:[13,3,1,""],recv_multipart:[13,3,1,""]},"eventmq.utils.classes.ZMQSendMixin":{"__weakref__":[13,1,1,""],send:[13,3,1,""],send_multipart:[13,3,1,""]},"eventmq.utils.messages":{fwd_emqp_router_message:[14,2,1,""],generate_msgid:[14,2,1,""],parse_message:[14,2,1,""],parse_router_message:[14,2,1,""],send_emqp_message:[14,2,1,""],send_emqp_router_message:[14,2,1,""]},"eventmq.utils.timeutils":{monotonic:[15,2,1,""],seconds_until:[15,2,1,""],timestamp:[15,2,1,""]},eventmq:{client:[1,0,0,"-"],exceptions:[4,0,0,"-"],jobmanager:[6,0,0,"-"],poller:[7,0,0,"-"],receiver:[9,0,0,"-"],router:[10,0,0,"-"],sender:[11,0,0,"-"],utils:[12,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","attribute","Python attribute"],"2":["py","function","Python function"],"3":["py","method","Python method"],"4":["py","class","Python class"],"5":["py","exception","Python exception"]},objtypes:{"0":"py:module","1":"py:attribute","2":"py:function","3":"py:method","4":"py:class","5":"py:exception"},terms:{"0mq":[8,13],"5min":[],"__init__":[6,7,9,11,13],"__weakref__":13,"_empty_":8,"_headers_":8,"_issu":[],"_msg_":8,"_msgid_":8,"_queue_name_":8,"_recipient_id":13,"_sourc":[],"_topic_name_":8,"_unix_ts_":8,"abstract":8,"case":[8,15],"class":[],"default":[2,6,8,9,10,11],"float":[13,15],"function":[2,10],"import":[2,3,6,10],"int":[2,7],"long":7,"new":10,"public":8,"return":[2,3,7,9,11,12,13,14,15],"true":[2,8,9,11,13],"while":8,abl:[],about:[6,8,10],absolut:3,accept:8,account:[10,14],ack:[8,10],ackd_msgid:6,acknowledg:[8,10],act:[1,8],activ:6,active_job:6,actual:[6,10],add:10,add_schedul:[],add_work:10,addr:[6,9,11],address:[],after:8,agre:8,all:[2,4,6,8,9,10,11,13],allow:8,alon:2,alpha:8,alreadi:10,also:[],alwai:[2,6],and_data:14,ani:[2,8,10],announc:10,anoth:[6,10],anyth:[],api:[],appear:7,appened:10,applic:[2,8],architectur:[],aren:[],arg2:2,arg3:2,arg:[2,6,7,9,10,11,13],argument:[],arithmet:15,around:[],assum:[],attempt:4,attr:7,automat:13,avail:[6,10],available_work:6,awaiting_ack:6,back:[8,10,13],backend_addr:10,base:[4,7],basi:8,becaus:10,becom:6,been:[2,13],befor:[2,7,8],begin:[6,10],belong:[8,10],below:8,best:2,between:8,bin:[],block:2,bool:[2,9,11,13],boot:15,both:[7,8],box:2,broadcast:8,broker:8,buffer:10,build:[2,10,11],build_module_path:2,built:8,bulid:9,busi:6,calcul:15,call:[6,7,10],callabl:[2,6,9],can:[1,2,8,10,14],certain:[],chang:[6,8],charact:12,check:[2,9,11,13],class_arg:[2,6],class_kwarg:[2,6],clean_up_dead_schedul:[],clean_up_dead_work:10,client:[],clock:[],close:[6,15],code:[3,5],colon:2,column:[],com:[],come:[2,10],comma:8,command:[2,6,8,10,13,14],complet:8,compon:8,configur:2,connction:[9,11],connect:[6,8,9,10,11,13,14],consist:8,contact:4,contain:[1,8,12],content:[],context:[9,11],convers:8,convienc:[7,13],correctli:10,count:[6,8,10,15],counter:13,cpu:2,creat:[10,11,12],cross:[],csv:8,current:[6,9,11],custom:10,data:[10,14],deal:12,dealer:11,death:13,debug:8,decor:2,decrypt:2,def:[],defeat:8,defer:2,defer_job:2,defin:[6,8,9,11,13],deliv:8,denot:[],describ:8,descript:8,detail:[2,8],detect:8,determin:8,devic:[7,13,14],dialog:8,dict:[2,6,7],dictionari:[7,8],did:2,die:[],differ:3,directli:[7,13],disabl:2,disconnect:[8,9],distribut:8,doe:[],doesn:7,dot:2,down:15,dst:15,duplic:10,dure:11,effort:2,either:8,els:[3,8],empti:8,emqp:[],emqpservic:[],enabl:2,encount:[2,4],end:[2,13],enderlab:[],ensur:[6,8],entri:10,error:2,even:8,event:7,eventloop:6,eventmqerror:4,everi:6,exampl:10,except:[],execut:[2,6,8],exist:[4,6],explicitli:13,expos:6,extra:8,fail:[2,8],failur:2,fair:8,fals:[2,6,8,9,11,13],few:3,field:8,file:[],find:13,finish:[8,10],first:8,fit:8,flag:[2,7],follow:[2,8],form:6,format:[2,6,8,14],forward:14,found:10,foundat:8,frame:[],free:[6,8],from:[4,6,7,8,9,10,11,15],frontend_addr:10,func:[2,6],fwd_emqp_router_messag:14,gener:[6,7,8,9,11,14],generate_msgid:14,github:[],give:2,given:10,gmtime:[],gnu:8,goal:[],good:13,guarante:[2,8],guarente:2,hand:12,handl:[6,8,10],happen:[7,10,11],hasn:[],have:[2,6,13,14],haven:10,header:[],heartbeat:[],heartbeat_timeout:10,heartbeati:13,heartbeatmixin:13,heavi:8,help:[],helper:[],here:[8,10],home:[],hope:8,how:[2,7],html:8,http:8,ident:8,identifi:10,ietf:8,ignor:8,immediatli:2,implement:[8,13],impli:8,includ:[2,8],incom:6,index:5,inform:[6,8,10],inform_typ:[],inherit:4,initi:2,insert:[8,13],instal:3,instanc:6,instanti:[2,6],interpret:8,interv:8,interval_min:[],interval_sec:[],intervalit:[],intes:2,invalidmessageerror:4,is_dead:13,is_heartbeat_en:[],isn:10,issu:[3,5,8],item:10,iter:7,itself:10,job:[],jobmanag:[],jobmanager_main:6,keep:[],kei:[7,8,10],kick:[6,10],know:[2,6,10],kwarg2:2,kwarg:[2,6,7,9,10,11,13],languag:[],last:[2,10],last_recv_heartbeat:[],later:[8,10],least:8,leav:8,length:12,lesser:8,let:8,lib:[],licens:[],like:[6,12,13],list:[2,6,8,10,13],listen:[6,9,10,11],locat:2,log:[2,6,10],logic:[6,10],longer:4,look:13,loop:[7,10],lower:10,mai:[2,8,10,13],main:6,make:12,malform:4,manag:[],mani:[2,8,11],manual:8,master:8,match:[],member:10,memebership:10,merchant:8,mess:15,messag:[],message_bodi:14,message_id:14,messageerror:4,met:13,meta:[10,14],method:[2,6,7,10,13],minut:[],mode:[],modifi:8,modul:[1,2,5,6,12],monoton:[10,13,15],more:[8,12],most:6,msg:[6,8,10,14],msg_id:[],msgid:[6,10],multipart:[8,13],must:[8,13],name:[2,6,8,9,10,11],need:[10,11],never:15,next:7,none:[2,6,9,10,11,13,14],noop:6,note:[6,9,11],now:13,number:[6,15],numer:[],object:[7,13],occur:13,off:[6,10],on_ack:6,on_command:[6,10],on_emqp_command:[],on_heartbeat:[6,10],on_inform:10,on_readi:10,on_receive_repli:[],on_receive_request:10,on_recv:9,on_request:6,on_schedul:[],onc:8,onli:[],onlin:10,option:[2,6,8,9,11,14],org:8,orient:8,origin:8,other:[2,8],otherwis:[2,6,9,11,13],out:[6,13],outgo:[],overwhelm:2,own:13,packag:[],page:5,param:2,paramet:[2,6,7,9,10,11,13,14],pars:[6,14],parse_messag:14,parse_router_messag:14,part:[8,14],particular:[8,11],pass:[2,8,9],path:[2,6],payload:14,peer:[4,8,13],peergoneawayerror:4,per:10,pictur:8,pip:[],placehold:[6,10],point:6,poll:7,poller:[],pollin:7,pollout:7,pool:[8,10],pop:10,portion:6,possibl:3,practic:13,prefix:14,prepend:8,pretti:8,problem:4,process:[6,8,10,11],process_messag:6,process_worker_messag:10,prop:[],properti:[9,11],protocol:[],protocol_vers:13,provid:[10,13],pub:8,publish:8,purpos:8,py2:[],py3:[],python2:[],queu:2,queue:[2,6,8,10],queue_messag:10,quick:2,rais:[2,4,9,11,14],random:[12,14],random_charact:12,raw:13,raw_messag:[],readi:[6,8,9,10,11],rebuild:11,receiv:[],received_disconnect:[],recent:[8,10],reciev:[],recip:[],recipi:[10,13,14],recipient_id:14,recommend:8,reconnect:11,recv:13,recv_multipart:13,redistribut:8,refer:[6,13],regist:[7,10],regular:8,rel:3,reliabl:8,remain:7,remot:13,remov:[8,10],reopen:6,rep:9,repli:[2,6,8,14],reply_request:2,repres:[],req:11,request:[],requeue_work:10,requir:8,requri:[],reset:[6,13],reset_heartbeat_count:13,resourc:[6,8],respond:[8,10],respons:[2,6,9,10,11],restart:[8,11],retri:[2,8],retry_count:2,rfc2119:8,rfc:8,robin:8,roughli:11,round:8,rout:[8,10],router:[],router_main:10,run:[2,6,8],sake:[],same:11,schedul:[],scheduler_id:[],scheduler_queu:[],scheduler_zmq_id:[],search:5,second:15,seconds_until:15,see:[7,8,10],self:[6,10,11],send:[2,4,6,8,10,11,13,14],send_ack:10,send_emqp_messag:14,send_emqp_router_messag:14,send_heartbeat:[10,13],send_inform:6,send_messag:[],send_multipart:13,send_raw:[],send_readi:6,send_request:2,send_schedule_request:[],send_schedulers_heartbeat:[],send_workers_heartbeat:10,sender:[],sender_id:14,sent:[8,10,13],seper:[2,8],serv:8,server:[6,8],servic:8,service_typ:[],set:[2,6,7,8,10,11,13],shall:8,shalt:[],should:[2,4,6,7,8,9,10,11],shown:8,simpl:[10,12],sinc:15,singl:8,site:[],skip:[11,13],skip_zmqstream:11,slot:[6,10],socket:[2,6,7,8,9,10,11,13,14],softwar:8,some:[2,6,12,13,14],someon:8,someth:[2,11,13,15],somewher:3,sourc:[3,5],spawn:6,specif:[],specifi:[8,12,13],start:[],start_valu:[],state:13,statu:8,stop:8,store:[6,10],str:[2,6,9,10,11,12,13,14],string:[2,6,8,9,10,11,14],structur:4,sub:8,subclass:4,subcmd:6,subcommand:[2,6],subject:8,subset:8,subtract:15,success:8,successfulli:2,system:3,take:[6,10,11,14],task:[2,6],tcp:[6,10],tell:6,term:8,than:[],thei:2,them:9,thi:[1,2,4,6,7,8,9,10,11,12,13,15],thing:[2,6,11,12,13,14],thou:[],threshold:13,through:[8,10],thy:[],time:[],timeout:7,timestamp:[8,10,15],timeutil:[],timezon:[],tip:3,tool:8,topic:[],topolog:[],tornado:6,trace:8,track:13,tri:2,tupl:[7,13,14],type:[2,8,9,11,12,13],type_:[],typecast:7,typeerror:9,unbind:[9,11],undefin:7,under:8,uniqu:[6,8,10],unit:6,univers:[],unix:8,unless:[6,9,11],unregist:7,unschedul:8,until:15,untouch:[10,14],unus:[],updat:[],upon:8,upstream:6,usag:[],usual:[],utilit:[],utlitii:[],uuid:[6,9,11],vagrant:[],valid:8,valu:[2,7,8,13,14,15],valueerror:[],variabl:13,version:[3,8,13],via:2,virtualenv:[],wait:[2,6,7],waiting_messag:10,walk:6,want:[],warn:10,warranti:8,weak:13,web:8,well:8,went:2,when:[1,2,3,4,6,8,9,10,11,13],where:[2,8,10,15],which:[8,10],who:[1,10],wish:[2,14],without:[8,11],word:8,work:[3,6,13],worker:[],worker_id:10,worri:8,would:[2,15],wrap:[],wrong:2,you:[2,3,8,10,11,13,14],your:[2,8,13],zcontext:[9,11],zeromq:8,zmq:[7,8,9,10,11,13,14],zmqreceivemixin:13,zmqsendmixin:13,zmqstream:11,zsocket:[9,11]},titles:["API Documentation","<code class=\"docutils literal\"><span class=\"pre\">client</span></code> &#8211; Client Utilities","<code class=\"docutils literal\"><span class=\"pre\">messages</span></code> &#8211; Client Messaging","Contributing to EventMQ","<code class=\"docutils literal\"><span class=\"pre\">exceptions</span></code> &#8211; Exceptions","EventMQ Documentation","<code class=\"docutils literal\"><span class=\"pre\">jobmanager</span></code> &#8211; Job Manager","<code class=\"docutils literal\"><span class=\"pre\">poller</span></code> &#8211; Poller","Goals","<code class=\"docutils literal\"><span class=\"pre\">receiver</span></code> &#8211; Receiver","<code class=\"docutils literal\"><span class=\"pre\">router</span></code> &#8211; Router","<code class=\"docutils literal\"><span class=\"pre\">sender</span></code> &#8211; Sender","<code class=\"docutils literal\"><span class=\"pre\">utils</span></code> &#8211; Utilities","<code class=\"docutils literal\"><span class=\"pre\">classes</span></code> &#8211; Utility Classes","<code class=\"docutils literal\"><span class=\"pre\">messages</span></code> &#8211; Message Utilities","<code class=\"docutils literal\"><span class=\"pre\">timeutils</span></code> &#8211; Time Utilites"],titleterms:{"class":13,address:8,api:0,architectur:8,client:[1,2,8],contribut:3,document:[0,5],emqp:8,eventmq:[3,5],except:4,frame:8,get:[],global:8,glossari:[],goal:8,guid:[],header:8,heartbeat:8,indic:5,job:6,jobmanag:6,languag:8,licens:8,manag:6,messag:[2,14],poller:7,protocol:[],receiv:9,request:8,router:[8,10],schedul:8,sender:11,specif:[],start:[],style:[],tabl:5,time:15,timeutil:15,topolog:8,util:[1,12,13,14],utilit:15,welcom:[],worker:8}}) \ No newline at end of file Search.setIndex({envversion:46,filenames:["api","client","client/messages","contributing","exceptions","index","jobmanager","poller","protocol","receiver","router","sender","utils","utils/classes","utils/messages","utils/timeutils"],objects:{"eventmq.client":{messages:[2,0,0,"-"]},"eventmq.client.messages":{build_module_path:[2,2,1,""],defer_job:[2,2,1,""],job:[2,2,1,""],send_request:[2,2,1,""]},"eventmq.exceptions":{EventMQError:[4,5,1,""],InvalidMessageError:[4,5,1,""],MessageError:[4,5,1,""],PeerGoneAwayError:[4,5,1,""]},"eventmq.jobmanager":{JobManager:[6,4,1,""]},"eventmq.jobmanager.JobManager":{"__init__":[6,3,1,""],active_jobs:[6,1,1,""],available_workers:[6,1,1,""],incoming:[6,1,1,""],jobmanager_main:[6,3,1,""],name:[6,1,1,""],on_ack:[6,3,1,""],on_heartbeat:[6,3,1,""],on_request:[6,3,1,""],process_message:[6,3,1,""],reset:[6,3,1,""],send_inform:[6,3,1,""],send_ready:[6,3,1,""],start:[6,3,1,""]},"eventmq.poller":{Poller:[7,4,1,""]},"eventmq.poller.Poller":{"__init__":[7,3,1,""],poll:[7,3,1,""],register:[7,3,1,""],unregister:[7,3,1,""]},"eventmq.receiver":{Receiver:[9,4,1,""]},"eventmq.receiver.Receiver":{"__init__":[9,3,1,""],connect:[9,3,1,""],listen:[9,3,1,""],name:[9,1,1,""],ready:[9,1,1,""],unbind:[9,3,1,""],zcontext:[9,1,1,""],zsocket:[9,1,1,""]},"eventmq.router":{Router:[10,4,1,""]},"eventmq.router.Router":{add_worker:[10,3,1,""],clean_up_dead_workers:[10,3,1,""],on_heartbeat:[10,3,1,""],on_inform:[10,3,1,""],on_ready:[10,3,1,""],on_receive_request:[10,3,1,""],process_worker_message:[10,3,1,""],queue_message:[10,3,1,""],queues:[10,1,1,""],requeue_worker:[10,3,1,""],router_main:[10,3,1,""],send_ack:[10,3,1,""],send_heartbeat:[10,3,1,""],send_workers_heartbeats:[10,3,1,""],start:[10,3,1,""],waiting_messages:[10,1,1,""],workers:[10,1,1,""]},"eventmq.sender":{Sender:[11,4,1,""]},"eventmq.sender.Sender":{"__init__":[11,3,1,""],connect:[11,3,1,""],listen:[11,3,1,""],name:[11,1,1,""],ready:[11,1,1,""],rebuild:[11,3,1,""],unbind:[11,3,1,""],zcontext:[11,1,1,""],zsocket:[11,1,1,""]},"eventmq.utils":{classes:[13,0,0,"-"],messages:[14,0,0,"-"],random_characters:[12,2,1,""],timeutils:[15,0,0,"-"]},"eventmq.utils.classes":{HeartbeatMixin:[13,4,1,""],ZMQReceiveMixin:[13,4,1,""],ZMQSendMixin:[13,4,1,""]},"eventmq.utils.classes.HeartbeatMixin":{"__init__":[13,3,1,""],"__weakref__":[13,1,1,""],is_dead:[13,3,1,""],reset_heartbeat_counters:[13,3,1,""],send_heartbeat:[13,3,1,""]},"eventmq.utils.classes.ZMQReceiveMixin":{"__weakref__":[13,1,1,""],recv:[13,3,1,""],recv_multipart:[13,3,1,""]},"eventmq.utils.classes.ZMQSendMixin":{"__weakref__":[13,1,1,""],send:[13,3,1,""],send_multipart:[13,3,1,""]},"eventmq.utils.messages":{fwd_emqp_router_message:[14,2,1,""],generate_msgid:[14,2,1,""],parse_message:[14,2,1,""],parse_router_message:[14,2,1,""],send_emqp_message:[14,2,1,""],send_emqp_router_message:[14,2,1,""]},"eventmq.utils.timeutils":{monotonic:[15,2,1,""],seconds_until:[15,2,1,""],timestamp:[15,2,1,""]},eventmq:{client:[1,0,0,"-"],exceptions:[4,0,0,"-"],jobmanager:[6,0,0,"-"],poller:[7,0,0,"-"],receiver:[9,0,0,"-"],router:[10,0,0,"-"],sender:[11,0,0,"-"],utils:[12,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","attribute","Python attribute"],"2":["py","function","Python function"],"3":["py","method","Python method"],"4":["py","class","Python class"],"5":["py","exception","Python exception"]},objtypes:{"0":"py:module","1":"py:attribute","2":"py:function","3":"py:method","4":"py:class","5":"py:exception"},terms:{"0mq":[8,13],"5min":[],"__init__":[6,7,9,11,13],"__weakref__":13,"_empty_":8,"_headers_":8,"_issu":[],"_msg_":8,"_msgid_":8,"_queue_name_":8,"_recipient_id":13,"_sourc":[],"_topic_name_":8,"_unix_ts_":8,"abstract":8,"case":[8,15],"class":[],"default":[2,6,8,9,10,11],"float":[13,15],"function":[2,10],"import":[2,3,6,10],"int":[2,7],"long":7,"new":10,"public":8,"return":[2,3,7,9,11,12,13,14,15],"true":[2,8,9,11,13],"while":8,abl:[],about:[6,8,10],absolut:3,accept:8,account:[10,14],ack:[8,10],ackd_msgid:6,acknowledg:[8,10],act:[1,8],activ:6,active_job:6,actual:[6,10],add:10,add_schedul:[],add_work:10,addr:[6,9,11],address:[],after:8,agre:8,all:[2,4,6,8,9,10,11,13],allow:8,alon:2,alpha:8,alreadi:10,also:[],alwai:[2,6],and_data:14,ani:[2,8,10],announc:10,anoth:[6,10],anyth:[],api:[],appear:7,appened:10,applic:[2,8],architectur:[],aren:[],arg2:2,arg3:2,arg:[2,6,7,9,10,11,13],argument:[],arithmet:15,around:[],assum:[],attempt:4,attr:7,automat:13,avail:[6,10],available_work:6,awaiting_ack:6,back:[8,10,13],backend_addr:10,base:[4,7],basi:8,becaus:10,becom:6,been:[2,13],befor:[2,7,8],begin:[6,10],belong:[8,10],below:8,best:2,between:8,bin:[],block:2,bool:[2,9,11,13],boot:15,both:[7,8],box:2,broadcast:8,broker:8,buffer:10,build:[2,10,11],build_module_path:2,built:8,bulid:9,busi:6,calcul:15,call:[6,7,10],callabl:[2,6,9],can:[1,2,8,10,14],certain:[],chang:[6,8],charact:12,check:[2,9,11,13],class_arg:[2,6],class_kwarg:[2,6],clean_up_dead_schedul:[],clean_up_dead_work:10,client:[],clock:[],close:[6,15],code:[3,5],colon:2,column:[],com:[],come:[2,10],comma:8,command:[2,6,8,10,13,14],complet:8,compon:8,configur:2,connction:[9,11],connect:[6,8,9,10,11,13,14],consist:8,contact:4,contain:[1,8,12],content:[],context:[9,11],convers:8,convienc:[7,13],correctli:10,count:[6,8,10,15],counter:13,cpu:2,creat:[10,11,12],cross:[],csv:8,current:[6,9,11],custom:10,data:[10,14],deal:12,dealer:11,death:13,debug:8,decor:2,decrypt:2,def:[],defeat:8,defer:2,defer_job:2,defin:[6,8,9,11,13],deliv:8,denot:[],describ:8,descript:8,detail:[2,8],detect:8,determin:8,devic:[7,13,14],dialog:8,dict:[2,6,7],dictionari:[7,8],did:2,die:[],differ:3,directli:[7,13],disabl:2,disconnect:[8,9],distribut:8,doe:[],doesn:7,dot:2,down:15,dst:15,duplic:10,dure:11,effort:2,either:8,els:[3,8],empti:8,emqp:[],emqpservic:[],enabl:2,encount:[2,4],end:[2,13],enderlab:[],ensur:[6,8],entri:10,error:2,even:8,event:7,eventloop:6,eventmqerror:4,everi:6,exampl:10,except:[],execut:[2,6,8],exist:[4,6],explicitli:13,expos:6,extra:8,fail:[2,8],failur:2,fair:8,fals:[2,6,8,9,11,13],few:3,field:8,file:[],find:13,finish:[8,10],first:8,fit:8,flag:[2,7],follow:[2,8],form:6,format:[2,6,8,14],forward:14,found:10,foundat:8,frame:[],free:[6,8],from:[4,6,7,8,9,10,11,15],frontend_addr:10,func:[2,6],fwd_emqp_router_messag:14,gener:[6,7,8,9,11,14],generate_msgid:14,github:[],give:2,given:10,gmtime:[],gnu:8,goal:[],good:13,guarante:[2,8],guarente:2,hand:12,handl:[6,8,10],happen:[7,10,11],hasn:[],have:[2,6,13,14],haven:10,header:[],heartbeat:[],heartbeat_timeout:10,heartbeati:13,heartbeatmixin:13,heavi:8,help:[],helper:[],here:[8,10],home:[],hope:8,how:[2,7],html:8,http:8,ident:8,identifi:10,ietf:8,ignor:8,immediatli:2,implement:[8,13],impli:8,includ:[2,8],incom:6,index:5,inform:[6,8,10],inform_typ:[],inherit:4,initi:2,insert:[8,13],instal:3,instanc:6,instanti:[2,6],interpret:8,interv:8,interval_min:[],interval_sec:[],intervalit:[],intes:2,invalidmessageerror:4,is_dead:13,is_heartbeat_en:[],isn:10,issu:[3,5,8],item:10,iter:7,itself:10,job:[],jobmanag:[],jobmanager_main:6,keep:[],kei:[7,8,10],kick:[6,10],know:[2,6,10],kwarg2:2,kwarg:[2,6,7,9,10,11,13],languag:[],last:[2,10],last_recv_heartbeat:[],later:[8,10],least:8,leav:8,length:12,lesser:8,let:8,lib:[],licens:[],like:[6,12,13],list:[2,6,8,10,13],listen:[6,9,10,11],locat:2,log:[2,6,10],logic:[6,10],longer:4,look:13,loop:[7,10],lower:10,mai:[2,8,10,13],main:6,make:12,malform:4,manag:[],mani:[2,8,11],manual:8,master:8,match:[],member:10,memebership:10,merchant:8,mess:15,messag:[],message_bodi:14,message_id:14,messageerror:4,met:13,meta:[10,14],method:[2,6,7,10,13],minut:[],mode:[],modifi:8,modul:[1,2,5,6,12],monoton:[10,13,15],more:[8,12],most:6,msg:[6,8,10,14],msg_id:[],msgid:[6,10],multipart:[8,13],must:[8,13],name:[2,6,8,9,10,11],need:[10,11],never:15,next:7,none:[2,6,9,10,11,13,14],noop:6,note:[6,9,11],now:13,number:[6,15],numer:[],object:[7,13],occur:13,off:[6,10],on_ack:6,on_command:[6,10],on_emqp_command:[],on_heartbeat:[6,10],on_inform:10,on_readi:10,on_receive_repli:[],on_receive_request:10,on_recv:9,on_request:6,on_schedul:[],onc:8,onli:[],onlin:10,option:[2,6,8,9,11,14],org:8,orient:8,origin:8,other:[2,8],otherwis:[2,6,9,11,13],out:[6,13],outgo:[],overwhelm:2,own:13,packag:[],page:5,param:2,paramet:[2,6,7,9,10,11,13,14],pars:[6,14],parse_messag:14,parse_router_messag:14,part:[8,14],particular:[8,11],pass:[2,8,9],path:[2,6],payload:14,peer:[4,8,13],peergoneawayerror:4,per:10,pictur:8,pip:[],placehold:[6,10],point:6,poll:7,poller:[],pollin:7,pollout:7,pool:[8,10],pop:10,portion:6,possibl:3,practic:13,prefix:14,prepend:8,pretti:8,problem:4,process:[6,8,10,11],process_messag:6,process_worker_messag:10,prop:[],properti:[9,11],protocol:[],protocol_vers:13,provid:[10,13],pub:8,publish:8,purpos:8,py2:[],py3:[],python2:[],queu:2,queue:[2,6,8,10],queue_messag:10,quick:2,rais:[2,4,9,11,14],random:[12,14],random_charact:12,raw:13,raw_messag:[],readi:[6,8,9,10,11],rebuild:11,receiv:[],received_disconnect:[],recent:[8,10],reciev:[],recip:[],recipi:[10,13,14],recipient_id:14,recommend:8,reconnect:11,recv:13,recv_multipart:13,redistribut:8,refer:[6,13],regist:[7,10],regular:8,rel:3,reliabl:8,remain:7,remot:13,remov:[8,10],reopen:6,rep:9,repli:[2,6,8,14],reply_request:2,repres:[],req:11,request:[],requeue_work:10,requir:8,requri:[],reset:[6,13],reset_heartbeat_count:13,resourc:[6,8],respond:[8,10],respons:[2,6,9,10,11],restart:[8,11],retri:[2,8],retry_count:2,rfc2119:8,rfc:8,robin:8,roughli:11,round:8,rout:[8,10],router:[],router_main:10,run:[2,6,8],sake:[],same:11,schedul:[],scheduler_id:[],scheduler_queu:[],scheduler_zmq_id:[],search:5,second:15,seconds_until:15,see:[7,8,10],self:[6,10,11],send:[2,4,6,8,10,11,13,14],send_ack:10,send_emqp_messag:14,send_emqp_router_messag:14,send_heartbeat:[10,13],send_inform:6,send_messag:[],send_multipart:13,send_raw:[],send_readi:6,send_request:2,send_schedule_request:[],send_schedulers_heartbeat:[],send_workers_heartbeat:10,sender:[],sender_id:14,sent:[8,10,13],seper:[2,8],serv:8,server:[6,8],servic:8,service_typ:[],set:[2,6,7,8,10,11,13],shall:8,shalt:[],should:[2,4,6,7,8,9,10,11],shown:8,simpl:[10,12],sinc:15,singl:8,site:[],skip:[11,13],skip_zmqstream:11,slot:[6,10],socket:[2,6,7,8,9,10,11,13,14],softwar:8,some:[2,6,12,13,14],someon:8,someth:[2,11,13,15],somewher:3,sourc:[3,5],spawn:6,specif:[],specifi:[8,12,13],start:[],start_valu:[],state:13,statu:8,stop:8,store:[6,10],str:[2,6,9,10,11,12,13,14],string:[2,6,8,9,10,11,14],structur:4,sub:8,subclass:4,subcmd:6,subcommand:[2,6],subject:8,subset:8,subtract:15,success:8,successfulli:2,system:3,take:[6,10,11,14],task:[2,6],tcp:[6,10],tell:6,term:8,than:[],thei:2,them:9,thi:[1,2,4,6,7,8,9,10,11,12,13,15],thing:[2,6,11,12,13,14],thou:[],threshold:13,through:[8,10],thy:[],time:[],timeout:7,timestamp:[8,10,15],timeutil:[],timezon:[],tip:3,tool:8,topic:[],topolog:[],tornado:6,trace:8,track:13,tri:2,tupl:[7,13,14],type:[2,8,9,11,12,13],type_:[],typecast:7,typeerror:9,unbind:[9,11],undefin:7,under:8,uniqu:[6,8,10],unit:6,univers:[],unix:8,unless:[6,9,11],unregist:7,unschedul:8,until:15,untouch:[10,14],unus:[],updat:[],upon:8,upstream:6,usag:[],usual:[],utilit:[],utlitii:[],uuid:[6,9,11],vagrant:[],valid:8,valu:[2,7,8,13,14,15],valueerror:[],variabl:13,version:[3,8,13],via:2,virtualenv:[],wait:[2,6,7],waiting_messag:10,walk:6,want:[],warn:10,warranti:8,weak:13,web:8,well:8,went:2,when:[1,2,3,4,6,8,9,10,11,13],where:[2,8,10,15],which:[8,10],who:[1,10],wish:[2,14],without:[8,11],word:8,work:[3,6,13],worker:[],worker_id:10,worri:8,would:[2,15],wrap:[],wrong:2,you:[2,3,8,10,11,13,14],your:[2,8,13],zcontext:[9,11],zeromq:8,zmq:[7,8,9,10,11,13,14],zmqreceivemixin:13,zmqsendmixin:13,zmqstream:11,zsocket:[9,11]},titles:["API Documentation","<code class=\"docutils literal\"><span class=\"pre\">client</span></code> &#8211; Client Utilities","<code class=\"docutils literal\"><span class=\"pre\">messages</span></code> &#8211; Client Messaging","Contributing to EventMQ","<code class=\"docutils literal\"><span class=\"pre\">exceptions</span></code> &#8211; Exceptions","EventMQ Documentation","<code class=\"docutils literal\"><span class=\"pre\">jobmanager</span></code> &#8211; Job Manager","<code class=\"docutils literal\"><span class=\"pre\">poller</span></code> &#8211; Poller","EventMQ Protocol Specification","<code class=\"docutils literal\"><span class=\"pre\">receiver</span></code> &#8211; Receiver","<code class=\"docutils literal\"><span class=\"pre\">router</span></code> &#8211; Router","<code class=\"docutils literal\"><span class=\"pre\">sender</span></code> &#8211; Sender","<code class=\"docutils literal\"><span class=\"pre\">utils</span></code> &#8211; Utilities","<code class=\"docutils literal\"><span class=\"pre\">classes</span></code> &#8211; Utility Classes","<code class=\"docutils literal\"><span class=\"pre\">messages</span></code> &#8211; Message Utilities","<code class=\"docutils literal\"><span class=\"pre\">timeutils</span></code> &#8211; Time Utilites"],titleterms:{"class":13,address:8,api:0,architectur:8,client:[1,2,8],contribut:3,document:[0,5],emqp:8,eventmq:[3,5,8],except:4,frame:8,get:[],global:8,glossari:[],goal:8,guid:[],header:8,heartbeat:8,indic:5,job:6,jobmanag:6,languag:8,licens:8,manag:6,messag:[2,14],poller:7,protocol:8,receiv:9,request:8,router:[8,10],schedul:8,sender:11,specif:8,start:[],style:[],tabl:5,time:15,timeutil:15,topolog:8,util:[1,12,13,14],utilit:15,welcom:[],worker:8}}) \ No newline at end of file