aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--_sources/api.txt2
-rw-r--r--_sources/protocol.txt2
-rw-r--r--_sources/utils/devices.txt3
-rw-r--r--_sources/utils/index.txt3
-rw-r--r--_sources/utils/settings.txt3
-rw-r--r--api.html5
-rw-r--r--client/messages.html51
-rw-r--r--contributing.html4
-rw-r--r--exceptions.html18
-rw-r--r--genindex.html200
-rw-r--r--index.html2
-rw-r--r--jobmanager.html80
-rw-r--r--objects.invbin1054 -> 1355 bytes
-rw-r--r--protocol.html6
-rw-r--r--py-modindex.html12
-rw-r--r--receiver.html2
-rw-r--r--router.html151
-rw-r--r--searchindex.js2
-rw-r--r--utils.html56
-rw-r--r--utils/classes.html320
-rw-r--r--utils/devices.html243
-rw-r--r--utils/index.html256
-rw-r--r--utils/settings.html231
-rw-r--r--utils/timeutils.html42
24 files changed, 1525 insertions, 169 deletions
diff --git a/_sources/api.txt b/_sources/api.txt
index 1a8ea89..8351355 100644
--- a/_sources/api.txt
+++ b/_sources/api.txt
@@ -12,4 +12,4 @@ API Documentation
12 receiver 12 receiver
13 router 13 router
14 sender 14 sender
15 utils 15 utils/index
diff --git a/_sources/protocol.txt b/_sources/protocol.txt
index d7bc01d..4c2aff0 100644
--- a/_sources/protocol.txt
+++ b/_sources/protocol.txt
@@ -144,7 +144,7 @@ FRAME Value Description
1441 eMQP/1.0 Protocol version 1441 eMQP/1.0 Protocol version
1452 INFORM command 1452 INFORM command
1463 _MSGID_ A unique id for the msg 1463 _MSGID_ A unique id for the msg
1474 _QUEUE_NAME_ csv seperated names of queue the worker belongs to 1474 _QUEUE_NAME_ csv seperated names of queue the worker belongs to.
1485 worker type of peer connecting 1485 worker type of peer connecting
149====== ============== =========== 149====== ============== ===========
150 150
diff --git a/_sources/utils/devices.txt b/_sources/utils/devices.txt
new file mode 100644
index 0000000..ef68c27
--- /dev/null
+++ b/_sources/utils/devices.txt
@@ -0,0 +1,3 @@
1.. automodule:: eventmq.utils.devices
2 :members:
3 :special-members:
diff --git a/_sources/utils/index.txt b/_sources/utils/index.txt
new file mode 100644
index 0000000..02904ed
--- /dev/null
+++ b/_sources/utils/index.txt
@@ -0,0 +1,3 @@
1.. automodule:: eventmq.utils
2 :members:
3 :special-members:
diff --git a/_sources/utils/settings.txt b/_sources/utils/settings.txt
new file mode 100644
index 0000000..1334f15
--- /dev/null
+++ b/_sources/utils/settings.txt
@@ -0,0 +1,3 @@
1.. automodule:: eventmq.utils.settings
2 :members:
3 :special-members:
diff --git a/api.html b/api.html
index 87d8541..7934f74 100644
--- a/api.html
+++ b/api.html
@@ -90,7 +90,7 @@
90<li class="toctree-l2"><a class="reference internal" href="receiver.html"><code class="docutils literal"><span class="pre">receiver</span></code> &#8211; Receiver</a></li> 90<li class="toctree-l2"><a class="reference internal" href="receiver.html"><code class="docutils literal"><span class="pre">receiver</span></code> &#8211; Receiver</a></li>
91<li class="toctree-l2"><a class="reference internal" href="router.html"><code class="docutils literal"><span class="pre">router</span></code> &#8211; Router</a></li> 91<li class="toctree-l2"><a class="reference internal" href="router.html"><code class="docutils literal"><span class="pre">router</span></code> &#8211; Router</a></li>
92<li class="toctree-l2"><a class="reference internal" href="sender.html"><code class="docutils literal"><span class="pre">sender</span></code> &#8211; Sender</a></li> 92<li class="toctree-l2"><a class="reference internal" href="sender.html"><code class="docutils literal"><span class="pre">sender</span></code> &#8211; Sender</a></li>
93<li class="toctree-l2"><a class="reference internal" href="utils.html"><code class="docutils literal"><span class="pre">utils</span></code> &#8211; Utilities</a></li> 93<li class="toctree-l2"><a class="reference internal" href="utils/index.html"><code class="docutils literal"><span class="pre">utils</span></code> &#8211; Utilities</a></li>
94</ul> 94</ul>
95</li> 95</li>
96<li class="toctree-l1"><a class="reference internal" href="contributing.html">Contributing to EventMQ</a></li> 96<li class="toctree-l1"><a class="reference internal" href="contributing.html">Contributing to EventMQ</a></li>
@@ -152,8 +152,9 @@
152<li class="toctree-l1"><a class="reference internal" href="receiver.html"><code class="docutils literal"><span class="pre">receiver</span></code> &#8211; Receiver</a></li> 152<li class="toctree-l1"><a class="reference internal" href="receiver.html"><code class="docutils literal"><span class="pre">receiver</span></code> &#8211; Receiver</a></li>
153<li class="toctree-l1"><a class="reference internal" href="router.html"><code class="docutils literal"><span class="pre">router</span></code> &#8211; Router</a></li> 153<li class="toctree-l1"><a class="reference internal" href="router.html"><code class="docutils literal"><span class="pre">router</span></code> &#8211; Router</a></li>
154<li class="toctree-l1"><a class="reference internal" href="sender.html"><code class="docutils literal"><span class="pre">sender</span></code> &#8211; Sender</a></li> 154<li class="toctree-l1"><a class="reference internal" href="sender.html"><code class="docutils literal"><span class="pre">sender</span></code> &#8211; Sender</a></li>
155<li class="toctree-l1"><a class="reference internal" href="utils.html"><code class="docutils literal"><span class="pre">utils</span></code> &#8211; Utilities</a><ul> 155<li class="toctree-l1"><a class="reference internal" href="utils/index.html"><code class="docutils literal"><span class="pre">utils</span></code> &#8211; Utilities</a><ul>
156<li class="toctree-l2"><a class="reference internal" href="utils/classes.html"><code class="docutils literal"><span class="pre">classes</span></code> &#8211; Utility Classes</a></li> 156<li class="toctree-l2"><a class="reference internal" href="utils/classes.html"><code class="docutils literal"><span class="pre">classes</span></code> &#8211; Utility Classes</a></li>
157<li class="toctree-l2"><a class="reference internal" href="utils/devices.html"><code class="docutils literal"><span class="pre">devices</span></code> &#8211; Device Utilities</a></li>
157<li class="toctree-l2"><a class="reference internal" href="utils/messages.html"><code class="docutils literal"><span class="pre">messages</span></code> &#8211; Message Utilities</a></li> 158<li class="toctree-l2"><a class="reference internal" href="utils/messages.html"><code class="docutils literal"><span class="pre">messages</span></code> &#8211; Message Utilities</a></li>
158<li class="toctree-l2"><a class="reference internal" href="utils/timeutils.html"><code class="docutils literal"><span class="pre">timeutils</span></code> &#8211; Time Utilites</a></li> 159<li class="toctree-l2"><a class="reference internal" href="utils/timeutils.html"><code class="docutils literal"><span class="pre">timeutils</span></code> &#8211; Time Utilites</a></li>
159</ul> 160</ul>
diff --git a/client/messages.html b/client/messages.html
index 4b9647f..744397a 100644
--- a/client/messages.html
+++ b/client/messages.html
@@ -226,6 +226,34 @@ that would otherwise overwhelm a box that has to do it all alone.
226</dd></dl> 226</dd></dl>
227 227
228<dl class="function"> 228<dl class="function">
229<dt id="eventmq.client.messages.schedule">
230<code class="descclassname">eventmq.client.messages.</code><code class="descname">schedule</code><span class="sig-paren">(</span><em>socket</em>, <em>func</em>, <em>interval_secs</em>, <em>args=()</em>, <em>kwargs=None</em>, <em>class_args=()</em>, <em>class_kwargs=None</em>, <em>headers=('guarantee'</em>, <em>)</em>, <em>queue='default'</em>, <em>unschedule=False</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.client.messages.schedule" title="Permalink to this definition">¶</a></dt>
231<dd><p>Execute a task on a defined interval.</p>
232<table class="docutils field-list" frame="void" rules="none">
233<col class="field-name" />
234<col class="field-body" />
235<tbody valign="top">
236<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
237<li><strong>socket</strong> (<a class="reference external" href="https://docs.python.org/library/socket.html#module-socket" title="(in Python v2.7)"><em>socket</em></a>) &#8211; eventmq socket to use for sending the message</li>
238<li><strong>func</strong> (<a class="reference external" href="https://docs.python.org/library/functions.html#callable" title="(in Python v2.7)"><em>callable</em></a>) &#8211; the callable to be scheduled on a worker</li>
239<li><strong>minutes</strong> (<a class="reference external" href="https://docs.python.org/library/functions.html#int" title="(in Python v2.7)"><em>int</em></a>) &#8211; minutes to wait in between executions</li>
240<li><strong>args</strong> (<a class="reference external" href="https://docs.python.org/library/functions.html#list" title="(in Python v2.7)"><em>list</em></a>) &#8211; list of <a href="#id9"><span class="problematic" id="id10">*</span></a>args to pass to the callable</li>
241<li><strong>kwargs</strong> (<a class="reference external" href="https://docs.python.org/library/stdtypes.html#dict" title="(in Python v2.7)"><em>dict</em></a>) &#8211; dict of <a href="#id11"><span class="problematic" id="id12">**</span></a>kwargs to pass to the callable</li>
242<li><strong>class_args</strong> (<a class="reference external" href="https://docs.python.org/library/functions.html#list" title="(in Python v2.7)"><em>list</em></a>) &#8211; list of <a href="#id13"><span class="problematic" id="id14">*</span></a>args to pass to the class (if applicable)</li>
243<li><strong>class_kwargs</strong> (<a class="reference external" href="https://docs.python.org/library/stdtypes.html#dict" title="(in Python v2.7)"><em>dict</em></a>) &#8211; dict of <a href="#id15"><span class="problematic" id="id16">**</span></a>kwargs to pass to the class (if
244applicable)</li>
245<li><strong>headers</strong> (<a class="reference external" href="https://docs.python.org/library/functions.html#list" title="(in Python v2.7)"><em>list</em></a>) &#8211; list of strings denoting enabled headers. Default:
246guarantee is enabled to ensure the scheduler schedules the job.</li>
247<li><strong>queue</strong> (<a class="reference external" href="https://docs.python.org/library/functions.html#str" title="(in Python v2.7)"><em>str</em></a>) &#8211; name of the queue to use when executing the job. The
248default value is the default queue.</li>
249</ul>
250</td>
251</tr>
252</tbody>
253</table>
254</dd></dl>
255
256<dl class="function">
229<dt id="eventmq.client.messages.send_request"> 257<dt id="eventmq.client.messages.send_request">
230<code class="descclassname">eventmq.client.messages.</code><code class="descname">send_request</code><span class="sig-paren">(</span><em>socket</em>, <em>message</em>, <em>reply_requested=False</em>, <em>guarantee=False</em>, <em>retry_count=0</em>, <em>queue=None</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.client.messages.send_request" title="Permalink to this definition">¶</a></dt> 258<code class="descclassname">eventmq.client.messages.</code><code class="descname">send_request</code><span class="sig-paren">(</span><em>socket</em>, <em>message</em>, <em>reply_requested=False</em>, <em>guarantee=False</em>, <em>retry_count=0</em>, <em>queue=None</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.client.messages.send_request" title="Permalink to this definition">¶</a></dt>
231<dd><p>Send a REQUEST command.</p> 259<dd><p>Send a REQUEST command.</p>
@@ -276,6 +304,29 @@ configured default queue name</li>
276</table> 304</table>
277</dd></dl> 305</dd></dl>
278 306
307<dl class="function">
308<dt id="eventmq.client.messages.send_schedule_request">
309<code class="descclassname">eventmq.client.messages.</code><code class="descname">send_schedule_request</code><span class="sig-paren">(</span><em>socket</em>, <em>interval_secs</em>, <em>message</em>, <em>headers=()</em>, <em>queue=None</em>, <em>unschedule=False</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.client.messages.send_schedule_request" title="Permalink to this definition">¶</a></dt>
310<dd><p>Send a SCHEDULE or UNSCHEDULE command.</p>
311<p>Queues a message requesting that something happens on an
312interval for the scheduler.</p>
313<table class="docutils field-list" frame="void" rules="none">
314<col class="field-name" />
315<col class="field-body" />
316<tbody valign="top">
317<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
318<li><strong>socket</strong> (<a class="reference external" href="https://docs.python.org/library/socket.html#module-socket" title="(in Python v2.7)"><em>socket</em></a>) &#8211; </li>
319<li><strong>interval_secs</strong> (<a class="reference external" href="https://docs.python.org/library/functions.html#int" title="(in Python v2.7)"><em>int</em></a>) &#8211; </li>
320<li><strong>message</strong> &#8211; Message to send socket.</li>
321<li><strong>headers</strong> (<a class="reference external" href="https://docs.python.org/library/functions.html#list" title="(in Python v2.7)"><em>list</em></a>) &#8211; List of headers for the message</li>
322<li><strong>queue</strong> (<a class="reference external" href="https://docs.python.org/library/functions.html#str" title="(in Python v2.7)"><em>str</em></a>) &#8211; name of queue the job should be executed in</li>
323</ul>
324</td>
325</tr>
326</tbody>
327</table>
328</dd></dl>
329
279</div> 330</div>
280 331
281 332
diff --git a/contributing.html b/contributing.html
index 79d9616..981b524 100644
--- a/contributing.html
+++ b/contributing.html
@@ -32,7 +32,7 @@
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="EventMQ Protocol Specification" 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="&lt;no title&gt;" href="utils.html"/>
36 36
37 37
38 <script src="_static/js/modernizr.min.js"></script> 38 <script src="_static/js/modernizr.min.js"></script>
@@ -160,7 +160,7 @@
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> 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>
161 161
162 162
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> 163 <a href="utils.html" class="btn btn-neutral" title="&lt;no title&gt;" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
164 164
165 </div> 165 </div>
166 166
diff --git a/exceptions.html b/exceptions.html
index a192639..c103808 100644
--- a/exceptions.html
+++ b/exceptions.html
@@ -91,7 +91,7 @@
91<li class="toctree-l2"><a class="reference internal" href="receiver.html"><code class="docutils literal"><span class="pre">receiver</span></code> &#8211; Receiver</a></li> 91<li class="toctree-l2"><a class="reference internal" href="receiver.html"><code class="docutils literal"><span class="pre">receiver</span></code> &#8211; Receiver</a></li>
92<li class="toctree-l2"><a class="reference internal" href="router.html"><code class="docutils literal"><span class="pre">router</span></code> &#8211; Router</a></li> 92<li class="toctree-l2"><a class="reference internal" href="router.html"><code class="docutils literal"><span class="pre">router</span></code> &#8211; Router</a></li>
93<li class="toctree-l2"><a class="reference internal" href="sender.html"><code class="docutils literal"><span class="pre">sender</span></code> &#8211; Sender</a></li> 93<li class="toctree-l2"><a class="reference internal" href="sender.html"><code class="docutils literal"><span class="pre">sender</span></code> &#8211; Sender</a></li>
94<li class="toctree-l2"><a class="reference internal" href="utils.html"><code class="docutils literal"><span class="pre">utils</span></code> &#8211; Utilities</a></li> 94<li class="toctree-l2"><a class="reference internal" href="utils/index.html"><code class="docutils literal"><span class="pre">utils</span></code> - Utilities</a></li>
95</ul> 95</ul>
96</li> 96</li>
97<li class="toctree-l1"><a class="reference internal" href="contributing.html">Contributing to EventMQ</a></li> 97<li class="toctree-l1"><a class="reference internal" href="contributing.html">Contributing to EventMQ</a></li>
@@ -148,7 +148,7 @@ be subclasses of <a class="reference internal" href="#eventmq.exceptions.EventMQ
148<dl class="exception"> 148<dl class="exception">
149<dt id="eventmq.exceptions.EventMQError"> 149<dt id="eventmq.exceptions.EventMQError">
150<em class="property">exception </em><code class="descclassname">eventmq.exceptions.</code><code class="descname">EventMQError</code><a class="headerlink" href="#eventmq.exceptions.EventMQError" title="Permalink to this definition">¶</a></dt> 150<em class="property">exception </em><code class="descclassname">eventmq.exceptions.</code><code class="descname">EventMQError</code><a class="headerlink" href="#eventmq.exceptions.EventMQError" title="Permalink to this definition">¶</a></dt>
151<dd><p>All exceptions raised by EventMQ inherit from this base exception</p> 151<dd><p>All exceptions raised by EventMQ inherit from this base exception.</p>
152</dd></dl> 152</dd></dl>
153 153
154<dl class="exception"> 154<dl class="exception">
@@ -160,7 +160,13 @@ be subclasses of <a class="reference internal" href="#eventmq.exceptions.EventMQ
160<dl class="exception"> 160<dl class="exception">
161<dt id="eventmq.exceptions.MessageError"> 161<dt id="eventmq.exceptions.MessageError">
162<em class="property">exception </em><code class="descclassname">eventmq.exceptions.</code><code class="descname">MessageError</code><a class="headerlink" href="#eventmq.exceptions.MessageError" title="Permalink to this definition">¶</a></dt> 162<em class="property">exception </em><code class="descclassname">eventmq.exceptions.</code><code class="descname">MessageError</code><a class="headerlink" href="#eventmq.exceptions.MessageError" title="Permalink to this definition">¶</a></dt>
163<dd><p>Raised when there is a problem with the structure of the message</p> 163<dd><p>Raised when there is a problem with the structure of the message.</p>
164</dd></dl>
165
166<dl class="exception">
167<dt id="eventmq.exceptions.NoAvailableWorkerSlotsError">
168<em class="property">exception </em><code class="descclassname">eventmq.exceptions.</code><code class="descname">NoAvailableWorkerSlotsError</code><a class="headerlink" href="#eventmq.exceptions.NoAvailableWorkerSlotsError" title="Permalink to this definition">¶</a></dt>
169<dd><p>Raised when there is no available workers for a job manager.</p>
164</dd></dl> 170</dd></dl>
165 171
166<dl class="exception"> 172<dl class="exception">
@@ -170,6 +176,12 @@ be subclasses of <a class="reference internal" href="#eventmq.exceptions.EventMQ
170sending a message to it)</p> 176sending a message to it)</p>
171</dd></dl> 177</dd></dl>
172 178
179<dl class="exception">
180<dt id="eventmq.exceptions.UnknownQueueError">
181<em class="property">exception </em><code class="descclassname">eventmq.exceptions.</code><code class="descname">UnknownQueueError</code><a class="headerlink" href="#eventmq.exceptions.UnknownQueueError" title="Permalink to this definition">¶</a></dt>
182<dd><p>Raised when a queue is not found in the internal list of queues.</p>
183</dd></dl>
184
173</div> 185</div>
174 186
175 187
diff --git a/genindex.html b/genindex.html
index 89b10e7..6186e51 100644
--- a/genindex.html
+++ b/genindex.html
@@ -175,18 +175,34 @@
175 </dt> 175 </dt>
176 176
177 177
178 <dt><a href="utils/classes.html#eventmq.utils.classes.EMQdeque.__init__">(eventmq.utils.classes.EMQdeque method)</a>
179 </dt>
180
181
178 <dt><a href="utils/classes.html#eventmq.utils.classes.HeartbeatMixin.__init__">(eventmq.utils.classes.HeartbeatMixin method)</a> 182 <dt><a href="utils/classes.html#eventmq.utils.classes.HeartbeatMixin.__init__">(eventmq.utils.classes.HeartbeatMixin method)</a>
179 </dt> 183 </dt>
180 184
185
186 <dt><a href="utils/timeutils.html#eventmq.utils.timeutils.IntervalIter.__init__">(eventmq.utils.timeutils.IntervalIter method)</a>
187 </dt>
188
181 </dl></dd> 189 </dl></dd>
182 </dl></td> 190 </dl></td>
183 <td style="width: 33%" valign="top"><dl> 191 <td style="width: 33%" valign="top"><dl>
184 192
185 <dt><a href="utils/classes.html#eventmq.utils.classes.HeartbeatMixin.__weakref__">__weakref__ (eventmq.utils.classes.HeartbeatMixin attribute)</a> 193 <dt><a href="utils/classes.html#eventmq.utils.classes.EMQdeque.__weakref__">__weakref__ (eventmq.utils.classes.EMQdeque attribute)</a>
186 </dt> 194 </dt>
187 195
188 <dd><dl> 196 <dd><dl>
189 197
198 <dt><a href="utils/classes.html#eventmq.utils.classes.EMQPService.__weakref__">(eventmq.utils.classes.EMQPService attribute)</a>
199 </dt>
200
201
202 <dt><a href="utils/classes.html#eventmq.utils.classes.HeartbeatMixin.__weakref__">(eventmq.utils.classes.HeartbeatMixin attribute)</a>
203 </dt>
204
205
190 <dt><a href="utils/classes.html#eventmq.utils.classes.ZMQReceiveMixin.__weakref__">(eventmq.utils.classes.ZMQReceiveMixin attribute)</a> 206 <dt><a href="utils/classes.html#eventmq.utils.classes.ZMQReceiveMixin.__weakref__">(eventmq.utils.classes.ZMQReceiveMixin attribute)</a>
191 </dt> 207 </dt>
192 208
@@ -194,6 +210,10 @@
194 <dt><a href="utils/classes.html#eventmq.utils.classes.ZMQSendMixin.__weakref__">(eventmq.utils.classes.ZMQSendMixin attribute)</a> 210 <dt><a href="utils/classes.html#eventmq.utils.classes.ZMQSendMixin.__weakref__">(eventmq.utils.classes.ZMQSendMixin attribute)</a>
195 </dt> 211 </dt>
196 212
213
214 <dt><a href="utils/timeutils.html#eventmq.utils.timeutils.IntervalIter.__weakref__">(eventmq.utils.timeutils.IntervalIter attribute)</a>
215 </dt>
216
197 </dl></dd> 217 </dl></dd>
198 </dl></td> 218 </dl></td>
199</tr></table> 219</tr></table>
@@ -202,7 +222,7 @@
202<table style="width: 100%" class="indextable genindextable"><tr> 222<table style="width: 100%" class="indextable genindextable"><tr>
203 <td style="width: 33%" valign="top"><dl> 223 <td style="width: 33%" valign="top"><dl>
204 224
205 <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.active_jobs">active_jobs (eventmq.jobmanager.JobManager attribute)</a> 225 <dt><a href="router.html#eventmq.router.Router.add_scheduler">add_scheduler() (eventmq.router.Router method)</a>
206 </dt> 226 </dt>
207 227
208 228
@@ -212,7 +232,11 @@
212 </dl></td> 232 </dl></td>
213 <td style="width: 33%" valign="top"><dl> 233 <td style="width: 33%" valign="top"><dl>
214 234
215 <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.available_workers">available_workers (eventmq.jobmanager.JobManager attribute)</a> 235 <dt><a href="utils/classes.html#eventmq.utils.classes.EMQdeque.append">append() (eventmq.utils.classes.EMQdeque method)</a>
236 </dt>
237
238
239 <dt><a href="utils/classes.html#eventmq.utils.classes.EMQdeque.appendleft">appendleft() (eventmq.utils.classes.EMQdeque method)</a>
216 </dt> 240 </dt>
217 241
218 </dl></td> 242 </dl></td>
@@ -232,6 +256,10 @@
232<table style="width: 100%" class="indextable genindextable"><tr> 256<table style="width: 100%" class="indextable genindextable"><tr>
233 <td style="width: 33%" valign="top"><dl> 257 <td style="width: 33%" valign="top"><dl>
234 258
259 <dt><a href="router.html#eventmq.router.Router.clean_up_dead_schedulers">clean_up_dead_schedulers() (eventmq.router.Router method)</a>
260 </dt>
261
262
235 <dt><a href="router.html#eventmq.router.Router.clean_up_dead_workers">clean_up_dead_workers() (eventmq.router.Router method)</a> 263 <dt><a href="router.html#eventmq.router.Router.clean_up_dead_workers">clean_up_dead_workers() (eventmq.router.Router method)</a>
236 </dt> 264 </dt>
237 265
@@ -264,6 +292,14 @@
264<table style="width: 100%" class="indextable genindextable"><tr> 292<table style="width: 100%" class="indextable genindextable"><tr>
265 <td style="width: 33%" valign="top"><dl> 293 <td style="width: 33%" valign="top"><dl>
266 294
295 <dt><a href="utils/classes.html#eventmq.utils.classes.EMQdeque">EMQdeque (class in eventmq.utils.classes)</a>
296 </dt>
297
298
299 <dt><a href="utils/classes.html#eventmq.utils.classes.EMQPService">EMQPService (class in eventmq.utils.classes)</a>
300 </dt>
301
302
267 <dt><a href="client.html#module-eventmq.client">eventmq.client (module)</a> 303 <dt><a href="client.html#module-eventmq.client">eventmq.client (module)</a>
268 </dt> 304 </dt>
269 305
@@ -298,7 +334,7 @@
298 </dt> 334 </dt>
299 335
300 336
301 <dt><a href="utils.html#module-eventmq.utils">eventmq.utils (module)</a> 337 <dt><a href="utils/index.html#module-eventmq.utils">eventmq.utils (module)</a>
302 </dt> 338 </dt>
303 339
304 340
@@ -306,10 +342,18 @@
306 </dt> 342 </dt>
307 343
308 344
345 <dt><a href="utils/devices.html#module-eventmq.utils.devices">eventmq.utils.devices (module)</a>
346 </dt>
347
348
309 <dt><a href="utils/messages.html#module-eventmq.utils.messages">eventmq.utils.messages (module)</a> 349 <dt><a href="utils/messages.html#module-eventmq.utils.messages">eventmq.utils.messages (module)</a>
310 </dt> 350 </dt>
311 351
312 352
353 <dt><a href="utils/settings.html#module-eventmq.utils.settings">eventmq.utils.settings (module)</a>
354 </dt>
355
356
313 <dt><a href="utils/timeutils.html#module-eventmq.utils.timeutils">eventmq.utils.timeutils (module)</a> 357 <dt><a href="utils/timeutils.html#module-eventmq.utils.timeutils">eventmq.utils.timeutils (module)</a>
314 </dt> 358 </dt>
315 359
@@ -317,6 +361,10 @@
317 <dt><a href="exceptions.html#eventmq.exceptions.EventMQError">EventMQError</a> 361 <dt><a href="exceptions.html#eventmq.exceptions.EventMQError">EventMQError</a>
318 </dt> 362 </dt>
319 363
364
365 <dt><a href="utils/classes.html#eventmq.utils.classes.EMQdeque.extend">extend() (eventmq.utils.classes.EMQdeque method)</a>
366 </dt>
367
320 </dl></td> 368 </dl></td>
321</tr></table> 369</tr></table>
322 370
@@ -334,10 +382,20 @@
334<table style="width: 100%" class="indextable genindextable"><tr> 382<table style="width: 100%" class="indextable genindextable"><tr>
335 <td style="width: 33%" valign="top"><dl> 383 <td style="width: 33%" valign="top"><dl>
336 384
385 <dt><a href="utils/devices.html#eventmq.utils.devices.generate_device_name">generate_device_name() (in module eventmq.utils.devices)</a>
386 </dt>
387
388
337 <dt><a href="utils/messages.html#eventmq.utils.messages.generate_msgid">generate_msgid() (in module eventmq.utils.messages)</a> 389 <dt><a href="utils/messages.html#eventmq.utils.messages.generate_msgid">generate_msgid() (in module eventmq.utils.messages)</a>
338 </dt> 390 </dt>
339 391
340 </dl></td> 392 </dl></td>
393 <td style="width: 33%" valign="top"><dl>
394
395 <dt><a href="router.html#eventmq.router.Router.get_available_worker">get_available_worker() (eventmq.router.Router method)</a>
396 </dt>
397
398 </dl></td>
341</tr></table> 399</tr></table>
342 400
343<h2 id="H">H</h2> 401<h2 id="H">H</h2>
@@ -354,17 +412,37 @@
354<table style="width: 100%" class="indextable genindextable"><tr> 412<table style="width: 100%" class="indextable genindextable"><tr>
355 <td style="width: 33%" valign="top"><dl> 413 <td style="width: 33%" valign="top"><dl>
356 414
357 <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.incoming">incoming (eventmq.jobmanager.JobManager attribute)</a> 415 <dt><a href="utils/settings.html#eventmq.utils.settings.import_settings">import_settings() (in module eventmq.utils.settings)</a>
416 </dt>
417
418
419 <dt><a href="utils/timeutils.html#eventmq.utils.timeutils.IntervalIter">IntervalIter (class in eventmq.utils.timeutils)</a>
358 </dt> 420 </dt>
359 421
360 422
361 <dt><a href="exceptions.html#eventmq.exceptions.InvalidMessageError">InvalidMessageError</a> 423 <dt><a href="exceptions.html#eventmq.exceptions.InvalidMessageError">InvalidMessageError</a>
362 </dt> 424 </dt>
363 425
426
427 <dt><a href="utils/classes.html#eventmq.utils.classes.HeartbeatMixin.is_dead">is_dead() (eventmq.utils.classes.HeartbeatMixin method)</a>
428 </dt>
429
364 </dl></td> 430 </dl></td>
365 <td style="width: 33%" valign="top"><dl> 431 <td style="width: 33%" valign="top"><dl>
366 432
367 <dt><a href="utils/classes.html#eventmq.utils.classes.HeartbeatMixin.is_dead">is_dead() (eventmq.utils.classes.HeartbeatMixin method)</a> 433 <dt><a href="utils/classes.html#eventmq.utils.classes.EMQdeque.is_empty">is_empty() (eventmq.utils.classes.EMQdeque method)</a>
434 </dt>
435
436
437 <dt><a href="utils/classes.html#eventmq.utils.classes.EMQdeque.is_full">is_full() (eventmq.utils.classes.EMQdeque method)</a>
438 </dt>
439
440
441 <dt><a href="utils/classes.html#eventmq.utils.classes.EMQPService.is_heartbeat_enabled">is_heartbeat_enabled (eventmq.utils.classes.EMQPService attribute)</a>
442 </dt>
443
444
445 <dt><a href="utils/classes.html#eventmq.utils.classes.EMQdeque.is_pfull">is_pfull() (eventmq.utils.classes.EMQdeque method)</a>
368 </dt> 446 </dt>
369 447
370 </dl></td> 448 </dl></td>
@@ -440,13 +518,19 @@
440 518
441 </dl></dd> 519 </dl></dd>
442 </dl></td> 520 </dl></td>
521 <td style="width: 33%" valign="top"><dl>
522
523 <dt><a href="exceptions.html#eventmq.exceptions.NoAvailableWorkerSlotsError">NoAvailableWorkerSlotsError</a>
524 </dt>
525
526 </dl></td>
443</tr></table> 527</tr></table>
444 528
445<h2 id="O">O</h2> 529<h2 id="O">O</h2>
446<table style="width: 100%" class="indextable genindextable"><tr> 530<table style="width: 100%" class="indextable genindextable"><tr>
447 <td style="width: 33%" valign="top"><dl> 531 <td style="width: 33%" valign="top"><dl>
448 532
449 <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.on_ack">on_ack() (eventmq.jobmanager.JobManager method)</a> 533 <dt><a href="utils/classes.html#eventmq.utils.classes.EMQPService.on_ack">on_ack() (eventmq.utils.classes.EMQPService method)</a>
450 </dt> 534 </dt>
451 535
452 536
@@ -463,12 +547,12 @@
463 <dt><a href="router.html#eventmq.router.Router.on_inform">on_inform() (eventmq.router.Router method)</a> 547 <dt><a href="router.html#eventmq.router.Router.on_inform">on_inform() (eventmq.router.Router method)</a>
464 </dt> 548 </dt>
465 549
466 </dl></td>
467 <td style="width: 33%" valign="top"><dl>
468 550
469 <dt><a href="router.html#eventmq.router.Router.on_ready">on_ready() (eventmq.router.Router method)</a> 551 <dt><a href="router.html#eventmq.router.Router.on_ready">on_ready() (eventmq.router.Router method)</a>
470 </dt> 552 </dt>
471 553
554 </dl></td>
555 <td style="width: 33%" valign="top"><dl>
472 556
473 <dt><a href="router.html#eventmq.router.Router.on_receive_request">on_receive_request() (eventmq.router.Router method)</a> 557 <dt><a href="router.html#eventmq.router.Router.on_receive_request">on_receive_request() (eventmq.router.Router method)</a>
474 </dt> 558 </dt>
@@ -477,6 +561,16 @@
477 <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.on_request">on_request() (eventmq.jobmanager.JobManager method)</a> 561 <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.on_request">on_request() (eventmq.jobmanager.JobManager method)</a>
478 </dt> 562 </dt>
479 563
564 <dd><dl>
565
566 <dt><a href="router.html#eventmq.router.Router.on_request">(eventmq.router.Router method)</a>
567 </dt>
568
569 </dl></dd>
570
571 <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.outgoing">outgoing (eventmq.jobmanager.JobManager attribute)</a>
572 </dt>
573
480 </dl></td> 574 </dl></td>
481</tr></table> 575</tr></table>
482 576
@@ -499,14 +593,26 @@
499 <dt><a href="poller.html#eventmq.poller.Poller.poll">poll() (eventmq.poller.Poller method)</a> 593 <dt><a href="poller.html#eventmq.poller.Poller.poll">poll() (eventmq.poller.Poller method)</a>
500 </dt> 594 </dt>
501 595
596
597 <dt><a href="poller.html#eventmq.poller.Poller">Poller (class in eventmq.poller)</a>
598 </dt>
599
502 </dl></td> 600 </dl></td>
503 <td style="width: 33%" valign="top"><dl> 601 <td style="width: 33%" valign="top"><dl>
504 602
505 <dt><a href="poller.html#eventmq.poller.Poller">Poller (class in eventmq.poller)</a> 603 <dt><a href="utils/classes.html#eventmq.utils.classes.EMQdeque.pop">pop() (eventmq.utils.classes.EMQdeque method)</a>
604 </dt>
605
606
607 <dt><a href="utils/classes.html#eventmq.utils.classes.EMQdeque.popleft">popleft() (eventmq.utils.classes.EMQdeque method)</a>
608 </dt>
609
610
611 <dt><a href="router.html#eventmq.router.Router.prioritize_queue_list">prioritize_queue_list() (eventmq.router.Router class method)</a>
506 </dt> 612 </dt>
507 613
508 614
509 <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.process_message">process_message() (eventmq.jobmanager.JobManager method)</a> 615 <dt><a href="utils/classes.html#eventmq.utils.classes.EMQPService.process_message">process_message() (eventmq.utils.classes.EMQPService method)</a>
510 </dt> 616 </dt>
511 617
512 618
@@ -536,7 +642,7 @@
536<table style="width: 100%" class="indextable genindextable"><tr> 642<table style="width: 100%" class="indextable genindextable"><tr>
537 <td style="width: 33%" valign="top"><dl> 643 <td style="width: 33%" valign="top"><dl>
538 644
539 <dt><a href="utils.html#eventmq.utils.random_characters">random_characters() (in module eventmq.utils)</a> 645 <dt><a href="utils/index.html#eventmq.utils.random_characters">random_characters() (in module eventmq.utils)</a>
540 </dt> 646 </dt>
541 647
542 648
@@ -554,6 +660,10 @@
554 </dt> 660 </dt>
555 661
556 662
663 <dt><a href="router.html#eventmq.router.Router.received_disconnect">received_disconnect (eventmq.router.Router attribute)</a>
664 </dt>
665
666
557 <dt><a href="receiver.html#eventmq.receiver.Receiver">Receiver (class in eventmq.receiver)</a> 667 <dt><a href="receiver.html#eventmq.receiver.Receiver">Receiver (class in eventmq.receiver)</a>
558 </dt> 668 </dt>
559 669
@@ -565,10 +675,18 @@
565 <dt><a href="utils/classes.html#eventmq.utils.classes.ZMQReceiveMixin.recv_multipart">recv_multipart() (eventmq.utils.classes.ZMQReceiveMixin method)</a> 675 <dt><a href="utils/classes.html#eventmq.utils.classes.ZMQReceiveMixin.recv_multipart">recv_multipart() (eventmq.utils.classes.ZMQReceiveMixin method)</a>
566 </dt> 676 </dt>
567 677
678
679 <dt><a href="poller.html#eventmq.poller.Poller.register">register() (eventmq.poller.Poller method)</a>
680 </dt>
681
568 </dl></td> 682 </dl></td>
569 <td style="width: 33%" valign="top"><dl> 683 <td style="width: 33%" valign="top"><dl>
570 684
571 <dt><a href="poller.html#eventmq.poller.Poller.register">register() (eventmq.poller.Poller method)</a> 685 <dt><a href="utils/classes.html#eventmq.utils.classes.EMQdeque.remove">remove() (eventmq.utils.classes.EMQdeque method)</a>
686 </dt>
687
688
689 <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.request_queue">request_queue (eventmq.jobmanager.JobManager attribute)</a>
572 </dt> 690 </dt>
573 691
574 692
@@ -576,13 +694,19 @@
576 </dt> 694 </dt>
577 695
578 696
579 <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.reset">reset() (eventmq.jobmanager.JobManager method)</a> 697 <dt><a href="utils/classes.html#eventmq.utils.classes.EMQPService.reset">reset() (eventmq.utils.classes.EMQPService method)</a>
580 </dt> 698 </dt>
581 699
582 700
583 <dt><a href="utils/classes.html#eventmq.utils.classes.HeartbeatMixin.reset_heartbeat_counters">reset_heartbeat_counters() (eventmq.utils.classes.HeartbeatMixin method)</a> 701 <dt><a href="router.html#eventmq.router.Router.reset_heartbeat_counters">reset_heartbeat_counters() (eventmq.router.Router method)</a>
584 </dt> 702 </dt>
585 703
704 <dd><dl>
705
706 <dt><a href="utils/classes.html#eventmq.utils.classes.HeartbeatMixin.reset_heartbeat_counters">(eventmq.utils.classes.HeartbeatMixin method)</a>
707 </dt>
708
709 </dl></dd>
586 710
587 <dt><a href="router.html#eventmq.router.Router">Router (class in eventmq.router)</a> 711 <dt><a href="router.html#eventmq.router.Router">Router (class in eventmq.router)</a>
588 </dt> 712 </dt>
@@ -598,6 +722,18 @@
598<table style="width: 100%" class="indextable genindextable"><tr> 722<table style="width: 100%" class="indextable genindextable"><tr>
599 <td style="width: 33%" valign="top"><dl> 723 <td style="width: 33%" valign="top"><dl>
600 724
725 <dt><a href="client/messages.html#eventmq.client.messages.schedule">schedule() (in module eventmq.client.messages)</a>
726 </dt>
727
728
729 <dt><a href="router.html#eventmq.router.Router.scheduler_queue">scheduler_queue (eventmq.router.Router attribute)</a>
730 </dt>
731
732
733 <dt><a href="router.html#eventmq.router.Router.schedulers">schedulers (eventmq.router.Router attribute)</a>
734 </dt>
735
736
601 <dt><a href="utils/timeutils.html#eventmq.utils.timeutils.seconds_until">seconds_until() (in module eventmq.utils.timeutils)</a> 737 <dt><a href="utils/timeutils.html#eventmq.utils.timeutils.seconds_until">seconds_until() (in module eventmq.utils.timeutils)</a>
602 </dt> 738 </dt>
603 739
@@ -628,7 +764,7 @@
628 764
629 </dl></dd> 765 </dl></dd>
630 766
631 <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.send_inform">send_inform() (eventmq.jobmanager.JobManager method)</a> 767 <dt><a href="utils/classes.html#eventmq.utils.classes.EMQPService.send_inform">send_inform() (eventmq.utils.classes.EMQPService method)</a>
632 </dt> 768 </dt>
633 769
634 </dl></td> 770 </dl></td>
@@ -646,6 +782,14 @@
646 </dt> 782 </dt>
647 783
648 784
785 <dt><a href="client/messages.html#eventmq.client.messages.send_schedule_request">send_schedule_request() (in module eventmq.client.messages)</a>
786 </dt>
787
788
789 <dt><a href="router.html#eventmq.router.Router.send_schedulers_heartbeats">send_schedulers_heartbeats() (eventmq.router.Router method)</a>
790 </dt>
791
792
649 <dt><a href="router.html#eventmq.router.Router.send_workers_heartbeats">send_workers_heartbeats() (eventmq.router.Router method)</a> 793 <dt><a href="router.html#eventmq.router.Router.send_workers_heartbeats">send_workers_heartbeats() (eventmq.router.Router method)</a>
650 </dt> 794 </dt>
651 795
@@ -654,12 +798,16 @@
654 </dt> 798 </dt>
655 799
656 800
657 <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.start">start() (eventmq.jobmanager.JobManager method)</a> 801 <dt><a href="router.html#eventmq.router.Router.sighup_handler">sighup_handler() (eventmq.router.Router method)</a>
802 </dt>
803
804
805 <dt><a href="router.html#eventmq.router.Router.start">start() (eventmq.router.Router method)</a>
658 </dt> 806 </dt>
659 807
660 <dd><dl> 808 <dd><dl>
661 809
662 <dt><a href="router.html#eventmq.router.Router.start">(eventmq.router.Router method)</a> 810 <dt><a href="utils/classes.html#eventmq.utils.classes.EMQPService.start">(eventmq.utils.classes.EMQPService method)</a>
663 </dt> 811 </dt>
664 812
665 </dl></dd> 813 </dl></dd>
@@ -689,6 +837,10 @@
689 </dt> 837 </dt>
690 838
691 </dl></dd> 839 </dl></dd>
840
841 <dt><a href="exceptions.html#eventmq.exceptions.UnknownQueueError">UnknownQueueError</a>
842 </dt>
843
692 </dl></td> 844 </dl></td>
693 <td style="width: 33%" valign="top"><dl> 845 <td style="width: 33%" valign="top"><dl>
694 846
@@ -708,9 +860,15 @@
708 </dl></td> 860 </dl></td>
709 <td style="width: 33%" valign="top"><dl> 861 <td style="width: 33%" valign="top"><dl>
710 862
711 <dt><a href="router.html#eventmq.router.Router.workers">workers (eventmq.router.Router attribute)</a> 863 <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.workers">workers (eventmq.jobmanager.JobManager attribute)</a>
712 </dt> 864 </dt>
713 865
866 <dd><dl>
867
868 <dt><a href="router.html#eventmq.router.Router.workers">(eventmq.router.Router attribute)</a>
869 </dt>
870
871 </dl></dd>
714 </dl></td> 872 </dl></td>
715</tr></table> 873</tr></table>
716 874
@@ -728,6 +886,10 @@
728 886
729 </dl></dd> 887 </dl></dd>
730 888
889 <dt><a href="utils/index.html#eventmq.utils.zero_index_cmp">zero_index_cmp() (in module eventmq.utils)</a>
890 </dt>
891
892
731 <dt><a href="utils/classes.html#eventmq.utils.classes.ZMQReceiveMixin">ZMQReceiveMixin (class in eventmq.utils.classes)</a> 893 <dt><a href="utils/classes.html#eventmq.utils.classes.ZMQReceiveMixin">ZMQReceiveMixin (class in eventmq.utils.classes)</a>
732 </dt> 894 </dt>
733 895
diff --git a/index.html b/index.html
index 87da31e..2f81ba1 100644
--- a/index.html
+++ b/index.html
@@ -139,7 +139,7 @@
139<li class="toctree-l2"><a class="reference internal" href="receiver.html"><code class="docutils literal"><span class="pre">receiver</span></code> &#8211; Receiver</a></li> 139<li class="toctree-l2"><a class="reference internal" href="receiver.html"><code class="docutils literal"><span class="pre">receiver</span></code> &#8211; Receiver</a></li>
140<li class="toctree-l2"><a class="reference internal" href="router.html"><code class="docutils literal"><span class="pre">router</span></code> &#8211; Router</a></li> 140<li class="toctree-l2"><a class="reference internal" href="router.html"><code class="docutils literal"><span class="pre">router</span></code> &#8211; Router</a></li>
141<li class="toctree-l2"><a class="reference internal" href="sender.html"><code class="docutils literal"><span class="pre">sender</span></code> &#8211; Sender</a></li> 141<li class="toctree-l2"><a class="reference internal" href="sender.html"><code class="docutils literal"><span class="pre">sender</span></code> &#8211; Sender</a></li>
142<li class="toctree-l2"><a class="reference internal" href="utils.html"><code class="docutils literal"><span class="pre">utils</span></code> &#8211; Utilities</a></li> 142<li class="toctree-l2"><a class="reference internal" href="utils/index.html"><code class="docutils literal"><span class="pre">utils</span></code> &#8211; Utilities</a></li>
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>
diff --git a/jobmanager.html b/jobmanager.html
index 2c81041..1c040f5 100644
--- a/jobmanager.html
+++ b/jobmanager.html
@@ -149,7 +149,7 @@
149<em class="property">class </em><code class="descclassname">eventmq.jobmanager.</code><code class="descname">JobManager</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.jobmanager.JobManager" title="Permalink to this definition">¶</a></dt> 149<em class="property">class </em><code class="descclassname">eventmq.jobmanager.</code><code class="descname">JobManager</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.jobmanager.JobManager" title="Permalink to this definition">¶</a></dt>
150<dd><p>The exposed portion of the worker. The job manager&#8217;s main responsibility is 150<dd><p>The exposed portion of the worker. The job manager&#8217;s main responsibility is
151to manage the resources on the server it&#8217;s running.</p> 151to manage the resources on the server it&#8217;s running.</p>
152<p>This job manager uses tornado&#8217;s eventloop.</p> 152<p>This job manager uses multiprocessing Queues</p>
153<dl class="method"> 153<dl class="method">
154<dt id="eventmq.jobmanager.JobManager.__init__"> 154<dt id="eventmq.jobmanager.JobManager.__init__">
155<code class="descname">__init__</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.jobmanager.JobManager.__init__" title="Permalink to this definition">¶</a></dt> 155<code class="descname">__init__</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.jobmanager.JobManager.__init__" title="Permalink to this definition">¶</a></dt>
@@ -168,29 +168,6 @@ generated.</td>
168</table> 168</table>
169</dd></dl> 169</dd></dl>
170 170
171<dl class="attribute">
172<dt id="eventmq.jobmanager.JobManager.active_jobs">
173<code class="descname">active_jobs</code><em class="property"> = None</em><a class="headerlink" href="#eventmq.jobmanager.JobManager.active_jobs" title="Permalink to this definition">¶</a></dt>
174<dd><p>Jobs that are running should be stored in <cite>active_jobs</cite>. There
175should always be at most <cite>available_workers</cite> count of active jobs.
176this point the manager should wait for a slot to free up.</p>
177</dd></dl>
178
179<dl class="attribute">
180<dt id="eventmq.jobmanager.JobManager.available_workers">
181<code class="descname">available_workers</code><em class="property"> = None</em><a class="headerlink" href="#eventmq.jobmanager.JobManager.available_workers" title="Permalink to this definition">¶</a></dt>
182<dd><p>Number of workers that are available to have a job executed. This
183number changes as workers become busy with jobs</p>
184</dd></dl>
185
186<dl class="attribute">
187<dt id="eventmq.jobmanager.JobManager.incoming">
188<code class="descname">incoming</code><em class="property"> = None</em><a class="headerlink" href="#eventmq.jobmanager.JobManager.incoming" title="Permalink to this definition">¶</a></dt>
189<dd><p>JobManager starts out by INFORMing the router of it&#8217;s existance,
190then telling the router that it is READY. The reply will be the unit
191of work.</p>
192</dd></dl>
193
194<dl class="method"> 171<dl class="method">
195<dt id="eventmq.jobmanager.JobManager.jobmanager_main"> 172<dt id="eventmq.jobmanager.JobManager.jobmanager_main">
196<code class="descname">jobmanager_main</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.jobmanager.JobManager.jobmanager_main" title="Permalink to this definition">¶</a></dt> 173<code class="descname">jobmanager_main</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.jobmanager.JobManager.jobmanager_main" title="Permalink to this definition">¶</a></dt>
@@ -205,12 +182,6 @@ referring to the logs.</p>
205</dd></dl> 182</dd></dl>
206 183
207<dl class="method"> 184<dl class="method">
208<dt id="eventmq.jobmanager.JobManager.on_ack">
209<code class="descname">on_ack</code><span class="sig-paren">(</span><em>msgid</em>, <em>ackd_msgid</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.jobmanager.JobManager.on_ack" title="Permalink to this definition">¶</a></dt>
210<dd><p>Sets <code class="xref py py-attr docutils literal"><span class="pre">awaiting_ack</span></code> to False</p>
211</dd></dl>
212
213<dl class="method">
214<dt id="eventmq.jobmanager.JobManager.on_heartbeat"> 185<dt id="eventmq.jobmanager.JobManager.on_heartbeat">
215<code class="descname">on_heartbeat</code><span class="sig-paren">(</span><em>msgid</em>, <em>message</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.jobmanager.JobManager.on_heartbeat" title="Permalink to this definition">¶</a></dt> 186<code class="descname">on_heartbeat</code><span class="sig-paren">(</span><em>msgid</em>, <em>message</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.jobmanager.JobManager.on_heartbeat" title="Permalink to this definition">¶</a></dt>
216<dd><p>a placeholder for a noop command. The actual &#8216;logic&#8217; for HEARTBEAT is 187<dd><p>a placeholder for a noop command. The actual &#8216;logic&#8217; for HEARTBEAT is
@@ -250,31 +221,18 @@ HEARTBEAT</p>
250</dl> 221</dl>
251</dd></dl> 222</dd></dl>
252 223
253<dl class="method"> 224<dl class="attribute">
254<dt id="eventmq.jobmanager.JobManager.process_message"> 225<dt id="eventmq.jobmanager.JobManager.outgoing">
255<code class="descname">process_message</code><span class="sig-paren">(</span><em>msg</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.jobmanager.JobManager.process_message" title="Permalink to this definition">¶</a></dt> 226<code class="descname">outgoing</code><em class="property"> = None</em><a class="headerlink" href="#eventmq.jobmanager.JobManager.outgoing" title="Permalink to this definition">¶</a></dt>
256<dd><p>Processes a message</p> 227<dd><p>JobManager starts out by INFORMing the router of it&#8217;s existence,
257<table class="docutils field-list" frame="void" rules="none"> 228then telling the router that it is READY. The reply will be the unit
258<col class="field-name" /> 229of work.</p>
259<col class="field-body" />
260<tbody valign="top">
261<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>msg</strong> &#8211; The message received from the socket to parse and process.
262Processing takes form of calling an <cite>on_COMMAND</cite> method.</td>
263</tr>
264</tbody>
265</table>
266</dd></dl>
267
268<dl class="method">
269<dt id="eventmq.jobmanager.JobManager.reset">
270<code class="descname">reset</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.jobmanager.JobManager.reset" title="Permalink to this definition">¶</a></dt>
271<dd><p>Resets the current connection by closing and reopening the socket</p>
272</dd></dl> 230</dd></dl>
273 231
274<dl class="method"> 232<dl class="attribute">
275<dt id="eventmq.jobmanager.JobManager.send_inform"> 233<dt id="eventmq.jobmanager.JobManager.request_queue">
276<code class="descname">send_inform</code><span class="sig-paren">(</span><em>queue=None</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.jobmanager.JobManager.send_inform" title="Permalink to this definition">¶</a></dt> 234<code class="descname">request_queue</code><em class="property"> = None</em><a class="headerlink" href="#eventmq.jobmanager.JobManager.request_queue" title="Permalink to this definition">¶</a></dt>
277<dd><p>Send an INFORM command</p> 235<dd><p>Setup worker queues</p>
278</dd></dl> 236</dd></dl>
279 237
280<dl class="method"> 238<dl class="method">
@@ -284,18 +242,10 @@ Processing takes form of calling an <cite>on_COMMAND</cite> method.</td>
284for another REQUEST message.</p> 242for another REQUEST message.</p>
285</dd></dl> 243</dd></dl>
286 244
287<dl class="method"> 245<dl class="attribute">
288<dt id="eventmq.jobmanager.JobManager.start"> 246<dt id="eventmq.jobmanager.JobManager.workers">
289<code class="descname">start</code><span class="sig-paren">(</span><em>addr='tcp://127.0.0.1:47291'</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.jobmanager.JobManager.start" title="Permalink to this definition">¶</a></dt> 247<code class="descname">workers</code><em class="property"> = None</em><a class="headerlink" href="#eventmq.jobmanager.JobManager.workers" title="Permalink to this definition">¶</a></dt>
290<dd><p>Connect to <cite>addr</cite> and begin listening for job requests</p> 248<dd><p>keep track of workers</p>
291<table class="docutils field-list" frame="void" rules="none">
292<col class="field-name" />
293<col class="field-body" />
294<tbody valign="top">
295<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>addr</strong> (<a class="reference external" href="https://docs.python.org/library/functions.html#str" title="(in Python v2.7)"><em>str</em></a>) &#8211; connection string to connect to</td>
296</tr>
297</tbody>
298</table>
299</dd></dl> 249</dd></dl>
300 250
301</dd></dl> 251</dd></dl>
diff --git a/objects.inv b/objects.inv
index 855bf43..fa92760 100644
--- a/objects.inv
+++ b/objects.inv
Binary files differ
diff --git a/protocol.html b/protocol.html
index 22906fa..43282f6 100644
--- a/protocol.html
+++ b/protocol.html
@@ -458,9 +458,9 @@
458<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>
459<table border="1" class="docutils"> 459<table border="1" class="docutils">
460<colgroup> 460<colgroup>
461<col width="9%" /> 461<col width="8%" />
462<col width="20%" /> 462<col width="20%" />
463<col width="71%" /> 463<col width="72%" />
464</colgroup> 464</colgroup>
465<thead valign="bottom"> 465<thead valign="bottom">
466<tr class="row-odd"><th class="head">FRAME</th> 466<tr class="row-odd"><th class="head">FRAME</th>
@@ -487,7 +487,7 @@
487</tr> 487</tr>
488<tr class="row-even"><td>4</td> 488<tr class="row-even"><td>4</td>
489<td>_QUEUE_NAME_</td> 489<td>_QUEUE_NAME_</td>
490<td>csv seperated names of queue the worker belongs to</td> 490<td>csv seperated names of queue the worker belongs to.</td>
491</tr> 491</tr>
492<tr class="row-odd"><td>5</td> 492<tr class="row-odd"><td>5</td>
493<td>worker</td> 493<td>worker</td>
diff --git a/py-modindex.html b/py-modindex.html
index e438994..e611bf7 100644
--- a/py-modindex.html
+++ b/py-modindex.html
@@ -187,7 +187,7 @@
187 <tr class="cg-1"> 187 <tr class="cg-1">
188 <td></td> 188 <td></td>
189 <td>&nbsp;&nbsp;&nbsp; 189 <td>&nbsp;&nbsp;&nbsp;
190 <a href="utils.html#module-eventmq.utils"><code class="xref">eventmq.utils</code></a></td><td> 190 <a href="utils/index.html#module-eventmq.utils"><code class="xref">eventmq.utils</code></a></td><td>
191 <em></em></td></tr> 191 <em></em></td></tr>
192 <tr class="cg-1"> 192 <tr class="cg-1">
193 <td></td> 193 <td></td>
@@ -197,11 +197,21 @@
197 <tr class="cg-1"> 197 <tr class="cg-1">
198 <td></td> 198 <td></td>
199 <td>&nbsp;&nbsp;&nbsp; 199 <td>&nbsp;&nbsp;&nbsp;
200 <a href="utils/devices.html#module-eventmq.utils.devices"><code class="xref">eventmq.utils.devices</code></a></td><td>
201 <em></em></td></tr>
202 <tr class="cg-1">
203 <td></td>
204 <td>&nbsp;&nbsp;&nbsp;
200 <a href="utils/messages.html#module-eventmq.utils.messages"><code class="xref">eventmq.utils.messages</code></a></td><td> 205 <a href="utils/messages.html#module-eventmq.utils.messages"><code class="xref">eventmq.utils.messages</code></a></td><td>
201 <em></em></td></tr> 206 <em></em></td></tr>
202 <tr class="cg-1"> 207 <tr class="cg-1">
203 <td></td> 208 <td></td>
204 <td>&nbsp;&nbsp;&nbsp; 209 <td>&nbsp;&nbsp;&nbsp;
210 <a href="utils/settings.html#module-eventmq.utils.settings"><code class="xref">eventmq.utils.settings</code></a></td><td>
211 <em></em></td></tr>
212 <tr class="cg-1">
213 <td></td>
214 <td>&nbsp;&nbsp;&nbsp;
205 <a href="utils/timeutils.html#module-eventmq.utils.timeutils"><code class="xref">eventmq.utils.timeutils</code></a></td><td> 215 <a href="utils/timeutils.html#module-eventmq.utils.timeutils"><code class="xref">eventmq.utils.timeutils</code></a></td><td>
206 <em></em></td></tr> 216 <em></em></td></tr>
207 </table> 217 </table>
diff --git a/receiver.html b/receiver.html
index c72aa28..63af37c 100644
--- a/receiver.html
+++ b/receiver.html
@@ -91,7 +91,7 @@
91<li class="toctree-l2 current"><a class="current reference internal" href=""><code class="docutils literal"><span class="pre">receiver</span></code> &#8211; Receiver</a></li> 91<li class="toctree-l2 current"><a class="current reference internal" href=""><code class="docutils literal"><span class="pre">receiver</span></code> &#8211; Receiver</a></li>
92<li class="toctree-l2"><a class="reference internal" href="router.html"><code class="docutils literal"><span class="pre">router</span></code> &#8211; Router</a></li> 92<li class="toctree-l2"><a class="reference internal" href="router.html"><code class="docutils literal"><span class="pre">router</span></code> &#8211; Router</a></li>
93<li class="toctree-l2"><a class="reference internal" href="sender.html"><code class="docutils literal"><span class="pre">sender</span></code> &#8211; Sender</a></li> 93<li class="toctree-l2"><a class="reference internal" href="sender.html"><code class="docutils literal"><span class="pre">sender</span></code> &#8211; Sender</a></li>
94<li class="toctree-l2"><a class="reference internal" href="utils.html"><code class="docutils literal"><span class="pre">utils</span></code> &#8211; Utilities</a></li> 94<li class="toctree-l2"><a class="reference internal" href="utils/index.html"><code class="docutils literal"><span class="pre">utils</span></code> - Utilities</a></li>
95</ul> 95</ul>
96</li> 96</li>
97<li class="toctree-l1"><a class="reference internal" href="contributing.html">Contributing to EventMQ</a></li> 97<li class="toctree-l1"><a class="reference internal" href="contributing.html">Contributing to EventMQ</a></li>
diff --git a/router.html b/router.html
index 5166889..896c4a6 100644
--- a/router.html
+++ b/router.html
@@ -91,7 +91,7 @@
91<li class="toctree-l2"><a class="reference internal" href="receiver.html"><code class="docutils literal"><span class="pre">receiver</span></code> &#8211; Receiver</a></li> 91<li class="toctree-l2"><a class="reference internal" href="receiver.html"><code class="docutils literal"><span class="pre">receiver</span></code> &#8211; Receiver</a></li>
92<li class="toctree-l2 current"><a class="current reference internal" href=""><code class="docutils literal"><span class="pre">router</span></code> &#8211; Router</a></li> 92<li class="toctree-l2 current"><a class="current reference internal" href=""><code class="docutils literal"><span class="pre">router</span></code> &#8211; Router</a></li>
93<li class="toctree-l2"><a class="reference internal" href="sender.html"><code class="docutils literal"><span class="pre">sender</span></code> &#8211; Sender</a></li> 93<li class="toctree-l2"><a class="reference internal" href="sender.html"><code class="docutils literal"><span class="pre">sender</span></code> &#8211; Sender</a></li>
94<li class="toctree-l2"><a class="reference internal" href="utils.html"><code class="docutils literal"><span class="pre">utils</span></code> &#8211; Utilities</a></li> 94<li class="toctree-l2"><a class="reference internal" href="utils/index.html"><code class="docutils literal"><span class="pre">utils</span></code> - Utilities</a></li>
95</ul> 95</ul>
96</li> 96</li>
97<li class="toctree-l1"><a class="reference internal" href="contributing.html">Contributing to EventMQ</a></li> 97<li class="toctree-l1"><a class="reference internal" href="contributing.html">Contributing to EventMQ</a></li>
@@ -149,6 +149,20 @@
149<em class="property">class </em><code class="descclassname">eventmq.router.</code><code class="descname">Router</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router" title="Permalink to this definition">¶</a></dt> 149<em class="property">class </em><code class="descclassname">eventmq.router.</code><code class="descname">Router</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router" title="Permalink to this definition">¶</a></dt>
150<dd><p>A simple router of messages</p> 150<dd><p>A simple router of messages</p>
151<dl class="method"> 151<dl class="method">
152<dt id="eventmq.router.Router.add_scheduler">
153<code class="descname">add_scheduler</code><span class="sig-paren">(</span><em>scheduler_id</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.add_scheduler" title="Permalink to this definition">¶</a></dt>
154<dd><p>Adds a scheduler to the queue to receive SCHEDULE commands</p>
155<table class="docutils field-list" frame="void" rules="none">
156<col class="field-name" />
157<col class="field-body" />
158<tbody valign="top">
159<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>scheduler_id</strong> (<a class="reference external" href="https://docs.python.org/library/functions.html#str" title="(in Python v2.7)"><em>str</em></a>) &#8211; unique id of the scheduler to add</td>
160</tr>
161</tbody>
162</table>
163</dd></dl>
164
165<dl class="method">
152<dt id="eventmq.router.Router.add_worker"> 166<dt id="eventmq.router.Router.add_worker">
153<code class="descname">add_worker</code><span class="sig-paren">(</span><em>worker_id</em>, <em>queues=None</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.add_worker" title="Permalink to this definition">¶</a></dt> 167<code class="descname">add_worker</code><span class="sig-paren">(</span><em>worker_id</em>, <em>queues=None</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.add_worker" title="Permalink to this definition">¶</a></dt>
154<dd><p>Adds a worker to worker queues</p> 168<dd><p>Adds a worker to worker queues</p>
@@ -157,7 +171,7 @@
157<col class="field-body" /> 171<col class="field-body" />
158<tbody valign="top"> 172<tbody valign="top">
159<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> 173<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
160<li><strong>worker_id</strong> &#8211; unique id of the worker to add</li> 174<li><strong>worker_id</strong> (<a class="reference external" href="https://docs.python.org/library/functions.html#str" title="(in Python v2.7)"><em>str</em></a>) &#8211; unique id of the worker to add</li>
161<li><strong>queues</strong> &#8211; queue or queues this worker should be a member of</li> 175<li><strong>queues</strong> &#8211; queue or queues this worker should be a member of</li>
162</ul> 176</ul>
163</td> 177</td>
@@ -167,6 +181,13 @@
167</dd></dl> 181</dd></dl>
168 182
169<dl class="method"> 183<dl class="method">
184<dt id="eventmq.router.Router.clean_up_dead_schedulers">
185<code class="descname">clean_up_dead_schedulers</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.clean_up_dead_schedulers" title="Permalink to this definition">¶</a></dt>
186<dd><p>Loops through the list of schedulers and remove any schedulers who
187the router hasn&#8217;t received a heartbeat in HEARTBEAT_TIMEOUT</p>
188</dd></dl>
189
190<dl class="method">
170<dt id="eventmq.router.Router.clean_up_dead_workers"> 191<dt id="eventmq.router.Router.clean_up_dead_workers">
171<code class="descname">clean_up_dead_workers</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.clean_up_dead_workers" title="Permalink to this definition">¶</a></dt> 192<code class="descname">clean_up_dead_workers</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.clean_up_dead_workers" title="Permalink to this definition">¶</a></dt>
172<dd><p>Loops through the worker queues and removes any workers who haven&#8217;t 193<dd><p>Loops through the worker queues and removes any workers who haven&#8217;t
@@ -174,6 +195,36 @@ responded in HEARTBEAT_TIMEOUT</p>
174</dd></dl> 195</dd></dl>
175 196
176<dl class="method"> 197<dl class="method">
198<dt id="eventmq.router.Router.get_available_worker">
199<code class="descname">get_available_worker</code><span class="sig-paren">(</span><em>queue_name='default'</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.get_available_worker" title="Permalink to this definition">¶</a></dt>
200<dd><p>Gets the job manager with the next available worker for the provided
201queue.</p>
202<table class="docutils field-list" frame="void" rules="none">
203<col class="field-name" />
204<col class="field-body" />
205<tbody valign="top">
206<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><p class="first"><strong>queue_name</strong> (<a class="reference external" href="https://docs.python.org/library/functions.html#str" title="(in Python v2.7)"><em>str</em></a>) &#8211; Name of the queue</p>
207</td>
208</tr>
209<tr class="field-even field"><th class="field-name">Raises:</th><td class="field-body"><ul class="first simple">
210<li><code class="xref py py-exc docutils literal"><span class="pre">NoAvailableWorkerSlotsError</span></code> &#8211; Raised when there are no available</li>
211<li>slots in any the job managers.</li>
212<li><code class="xref py py-exc docutils literal"><span class="pre">UnknownQueueError</span></code> &#8211; Raised when <code class="docutils literal"><span class="pre">queue_name</span></code> is not found in
213self.queues</li>
214</ul>
215</td>
216</tr>
217<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">uuid of the job manager with an available worker slot</p>
218</td>
219</tr>
220<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last">(str)</p>
221</td>
222</tr>
223</tbody>
224</table>
225</dd></dl>
226
227<dl class="method">
177<dt id="eventmq.router.Router.on_heartbeat"> 228<dt id="eventmq.router.Router.on_heartbeat">
178<code class="descname">on_heartbeat</code><span class="sig-paren">(</span><em>sender</em>, <em>msgid</em>, <em>msg</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.on_heartbeat" title="Permalink to this definition">¶</a></dt> 229<code class="descname">on_heartbeat</code><span class="sig-paren">(</span><em>sender</em>, <em>msgid</em>, <em>msg</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.on_heartbeat" title="Permalink to this definition">¶</a></dt>
179<dd><p>a placeholder for a no-op command. The actual &#8216;logic&#8217; for HEARTBEAT is 230<dd><p>a placeholder for a no-op command. The actual &#8216;logic&#8217; for HEARTBEAT is
@@ -209,11 +260,8 @@ and announces itself.</p>
209 260
210<dl class="method"> 261<dl class="method">
211<dt id="eventmq.router.Router.on_receive_request"> 262<dt id="eventmq.router.Router.on_receive_request">
212<code class="descname">on_receive_request</code><span class="sig-paren">(</span><em>msg</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.on_receive_request" title="Permalink to this definition">¶</a></dt> 263<code class="descname">on_receive_request</code><span class="sig-paren">(</span><em>msg</em>, <em>depth=0</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.on_receive_request" title="Permalink to this definition">¶</a></dt>
213<dd><p>This function is called when a message comes in from the client socket. 264<dd><table class="docutils field-list" frame="void" rules="none">
214It then calls <cite>on_command</cite>. If <cite>on_command</cite> isn&#8217;t found, then a
215warning is created.</p>
216<table class="docutils field-list" frame="void" rules="none">
217<col class="field-name" /> 265<col class="field-name" />
218<col class="field-body" /> 266<col class="field-body" />
219<tbody valign="top"> 267<tbody valign="top">
@@ -224,6 +272,33 @@ warning is created.</p>
224</dd></dl> 272</dd></dl>
225 273
226<dl class="method"> 274<dl class="method">
275<dt id="eventmq.router.Router.on_request">
276<code class="descname">on_request</code><span class="sig-paren">(</span><em>sender</em>, <em>msgid</em>, <em>msg</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.on_request" title="Permalink to this definition">¶</a></dt>
277<dd><p>Process a client REQUEST frame</p>
278</dd></dl>
279
280<dl class="classmethod">
281<dt id="eventmq.router.Router.prioritize_queue_list">
282<em class="property">classmethod </em><code class="descname">prioritize_queue_list</code><span class="sig-paren">(</span><em>unprioritized_iterable</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.prioritize_queue_list" title="Permalink to this definition">¶</a></dt>
283<dd><p>Prioritize a given iterable in the format: ((PRIORITY, OBJ),..)</p>
284<table class="docutils field-list" frame="void" rules="none">
285<col class="field-name" />
286<col class="field-body" />
287<tbody valign="top">
288<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>unprioritized_iterable</strong> (<a class="reference external" href="https://docs.python.org/library/functions.html#iter" title="(in Python v2.7)"><em>iter</em></a>) &#8211; Any list, tuple, etc where the
2890-index key is an integer to use as priority. Largest numbers
290come first.</td>
291</tr>
292<tr class="field-even field"><th class="field-name">Raises:</th><td class="field-body">IndexError - There was no 0-index element.</td>
293</tr>
294<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">sorted <code class="xref py py-class docutils literal"><span class="pre">EMQdeque</span></code> with largest priorites being indexed
295smaller. E.g. ((20,&#8217;a&#8217; ), (14, &#8216;b&#8217;), (&#8216;12&#8217;, c))</td>
296</tr>
297</tbody>
298</table>
299</dd></dl>
300
301<dl class="method">
227<dt id="eventmq.router.Router.process_worker_message"> 302<dt id="eventmq.router.Router.process_worker_message">
228<code class="descname">process_worker_message</code><span class="sig-paren">(</span><em>msg</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.process_worker_message" title="Permalink to this definition">¶</a></dt> 303<code class="descname">process_worker_message</code><span class="sig-paren">(</span><em>msg</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.process_worker_message" title="Permalink to this definition">¶</a></dt>
229<dd><p>This method is called when a message comes in from the worker socket. 304<dd><p>This method is called when a message comes in from the worker socket.
@@ -256,14 +331,22 @@ worker slot, so you may see duplicate addresses.</p>
256<p>{&#8216;default&#8217;: [&#8216;w1&#8217;, &#8216;w2&#8217;, &#8216;w1&#8217;, &#8216;w4&#8217;]}</p> 331<p>{&#8216;default&#8217;: [&#8216;w1&#8217;, &#8216;w2&#8217;, &#8216;w1&#8217;, &#8216;w4&#8217;]}</p>
257</dd></dl> 332</dd></dl>
258 333
334<dl class="attribute">
335<dt id="eventmq.router.Router.received_disconnect">
336<code class="descname">received_disconnect</code><em class="property"> = None</em><a class="headerlink" href="#eventmq.router.Router.received_disconnect" title="Permalink to this definition">¶</a></dt>
337<dd><p>Set to True when the router should die.</p>
338</dd></dl>
339
259<dl class="method"> 340<dl class="method">
260<dt id="eventmq.router.Router.requeue_worker"> 341<dt id="eventmq.router.Router.requeue_worker">
261<code class="descname">requeue_worker</code><span class="sig-paren">(</span><em>worker_id</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.requeue_worker" title="Permalink to this definition">¶</a></dt> 342<code class="descname">requeue_worker</code><span class="sig-paren">(</span><em>worker_id</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.requeue_worker" title="Permalink to this definition">¶</a></dt>
262<dd><p>Add a worker back to the pools for which it is a member of.</p> 343<dd><p>Add a worker back to the pools for which it is a member of.</p>
263<div class="admonition note"> 344</dd></dl>
264<p class="first admonition-title">Note</p> 345
265<p class="last">This will (correctly) add duplicate items into the queues.</p> 346<dl class="method">
266</div> 347<dt id="eventmq.router.Router.reset_heartbeat_counters">
348<code class="descname">reset_heartbeat_counters</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.reset_heartbeat_counters" title="Permalink to this definition">¶</a></dt>
349<dd><p>Reset all the counters for heartbeats back to 0</p>
267</dd></dl> 350</dd></dl>
268 351
269<dl class="method"> 352<dl class="method">
@@ -272,6 +355,28 @@ worker slot, so you may see duplicate addresses.</p>
272<dd><p>Kick off router with logging and settings import</p> 355<dd><p>Kick off router with logging and settings import</p>
273</dd></dl> 356</dd></dl>
274 357
358<dl class="attribute">
359<dt id="eventmq.router.Router.scheduler_queue">
360<code class="descname">scheduler_queue</code><em class="property"> = None</em><a class="headerlink" href="#eventmq.router.Router.scheduler_queue" title="Permalink to this definition">¶</a></dt>
361<dd><p><em>Queue for schedulers to use</em></p>
362</dd></dl>
363
364<dl class="attribute">
365<dt id="eventmq.router.Router.schedulers">
366<code class="descname">schedulers</code><em class="property"> = None</em><a class="headerlink" href="#eventmq.router.Router.schedulers" title="Permalink to this definition">¶</a></dt>
367<dd><p>Scheduler clients. Clients are able to send SCHEDULE commands that
368need to be routed to a scheduler, which will keep track of time and
369run the job.
370Contains dictionaries:</p>
371<blockquote>
372<div><dl class="docutils">
373<dt>self.schedulers[&lt;scheduler_zmq_id&gt;] = {</dt>
374<dd>&#8216;hb&#8217;: &lt;last_recv_heartbeat&gt;,</dd>
375</dl>
376<p>}</p>
377</div></blockquote>
378</dd></dl>
379
275<dl class="method"> 380<dl class="method">
276<dt id="eventmq.router.Router.send_ack"> 381<dt id="eventmq.router.Router.send_ack">
277<code class="descname">send_ack</code><span class="sig-paren">(</span><em>socket</em>, <em>recipient</em>, <em>msgid</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.send_ack" title="Permalink to this definition">¶</a></dt> 382<code class="descname">send_ack</code><span class="sig-paren">(</span><em>socket</em>, <em>recipient</em>, <em>msgid</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.send_ack" title="Permalink to this definition">¶</a></dt>
@@ -311,14 +416,27 @@ needed when building messages</p>
311</dd></dl> 416</dd></dl>
312 417
313<dl class="method"> 418<dl class="method">
419<dt id="eventmq.router.Router.send_schedulers_heartbeats">
420<code class="descname">send_schedulers_heartbeats</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.send_schedulers_heartbeats" title="Permalink to this definition">¶</a></dt>
421<dd><p>Send HEARTBEATs to all registered schedulers</p>
422</dd></dl>
423
424<dl class="method">
314<dt id="eventmq.router.Router.send_workers_heartbeats"> 425<dt id="eventmq.router.Router.send_workers_heartbeats">
315<code class="descname">send_workers_heartbeats</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.send_workers_heartbeats" title="Permalink to this definition">¶</a></dt> 426<code class="descname">send_workers_heartbeats</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.send_workers_heartbeats" title="Permalink to this definition">¶</a></dt>
316<dd><p>Send heartbeats to all registered workers.</p> 427<dd><p>Send HEARTBEATs to all registered workers.</p>
428</dd></dl>
429
430<dl class="method">
431<dt id="eventmq.router.Router.sighup_handler">
432<code class="descname">sighup_handler</code><span class="sig-paren">(</span><em>signum</em>, <em>frame</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.sighup_handler" title="Permalink to this definition">¶</a></dt>
433<dd><p>Reloads the configuration and rebinds the ports. Exectued when the
434process receives a SIGHUP from the system.</p>
317</dd></dl> 435</dd></dl>
318 436
319<dl class="method"> 437<dl class="method">
320<dt id="eventmq.router.Router.start"> 438<dt id="eventmq.router.Router.start">
321<code class="descname">start</code><span class="sig-paren">(</span><em>frontend_addr='tcp://127.0.0.1:47290'</em>, <em>backend_addr='tcp://127.0.0.1:47291'</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.start" title="Permalink to this definition">¶</a></dt> 439<code class="descname">start</code><span class="sig-paren">(</span><em>frontend_addr='tcp://127.0.0.1:47291'</em>, <em>backend_addr='tcp://127.0.0.1:47290'</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.start" title="Permalink to this definition">¶</a></dt>
322<dd><p>Begin listening for connections on the provided connection strings</p> 440<dd><p>Begin listening for connections on the provided connection strings</p>
323<table class="docutils field-list" frame="void" rules="none"> 441<table class="docutils field-list" frame="void" rules="none">
324<col class="field-name" /> 442<col class="field-name" />
@@ -350,8 +468,11 @@ here.</p>
350<dl class="docutils"> 468<dl class="docutils">
351<dt><strong>Keys</strong></dt> 469<dt><strong>Keys</strong></dt>
352<dd><ul class="first last simple"> 470<dd><ul class="first last simple">
353<li>queues: list() of queues the worker belongs to</li> 471<li><code class="docutils literal"><span class="pre">queues</span></code>: list() of queues the worker belongs to</li>
354<li>hb: monotonic timestamp of the last received message from worker</li> 472<li><code class="docutils literal"><span class="pre">hb</span></code>: monotonic timestamp of the last received message from
473worker</li>
474<li><code class="docutils literal"><span class="pre">available_slots</span></code>: int count of jobs this manager can still
475process.</li>
355</ul> 476</ul>
356</dd> 477</dd>
357</dl> 478</dl>
diff --git a/searchindex.js b/searchindex.js
index 4f827de..a0264eb 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","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 Search.setIndex({envversion:46,filenames:["api","client","client/messages","contributing","exceptions","index","jobmanager","poller","protocol","receiver","router","sender","utils/classes","utils/devices","utils/index","utils/messages","utils/settings","utils/timeutils"],objects:{"eventmq.client":{messages:[2,0,0,"-"]},"eventmq.client.messages":{build_module_path:[2,4,1,""],defer_job:[2,4,1,""],job:[2,4,1,""],schedule:[2,4,1,""],send_request:[2,4,1,""],send_schedule_request:[2,4,1,""]},"eventmq.exceptions":{EventMQError:[4,5,1,""],InvalidMessageError:[4,5,1,""],MessageError:[4,5,1,""],NoAvailableWorkerSlotsError:[4,5,1,""],PeerGoneAwayError:[4,5,1,""],UnknownQueueError:[4,5,1,""]},"eventmq.jobmanager":{JobManager:[6,3,1,""]},"eventmq.jobmanager.JobManager":{"__init__":[6,2,1,""],jobmanager_main:[6,2,1,""],name:[6,1,1,""],on_heartbeat:[6,2,1,""],on_request:[6,2,1,""],outgoing:[6,1,1,""],request_queue:[6,1,1,""],send_ready:[6,2,1,""],workers:[6,1,1,""]},"eventmq.poller":{Poller:[7,3,1,""]},"eventmq.poller.Poller":{"__init__":[7,2,1,""],poll:[7,2,1,""],register:[7,2,1,""],unregister:[7,2,1,""]},"eventmq.receiver":{Receiver:[9,3,1,""]},"eventmq.receiver.Receiver":{"__init__":[9,2,1,""],connect:[9,2,1,""],listen:[9,2,1,""],name:[9,1,1,""],ready:[9,1,1,""],unbind:[9,2,1,""],zcontext:[9,1,1,""],zsocket:[9,1,1,""]},"eventmq.router":{Router:[10,3,1,""]},"eventmq.router.Router":{add_scheduler:[10,2,1,""],add_worker:[10,2,1,""],clean_up_dead_schedulers:[10,2,1,""],clean_up_dead_workers:[10,2,1,""],get_available_worker:[10,2,1,""],on_heartbeat:[10,2,1,""],on_inform:[10,2,1,""],on_ready:[10,2,1,""],on_receive_request:[10,2,1,""],on_request:[10,2,1,""],prioritize_queue_list:[10,6,1,""],process_worker_message:[10,2,1,""],queue_message:[10,2,1,""],queues:[10,1,1,""],received_disconnect:[10,1,1,""],requeue_worker:[10,2,1,""],reset_heartbeat_counters:[10,2,1,""],router_main:[10,2,1,""],scheduler_queue:[10,1,1,""],schedulers:[10,1,1,""],send_ack:[10,2,1,""],send_heartbeat:[10,2,1,""],send_schedulers_heartbeats:[10,2,1,""],send_workers_heartbeats:[10,2,1,""],sighup_handler:[10,2,1,""],start:[10,2,1,""],waiting_messages:[10,1,1,""],workers:[10,1,1,""]},"eventmq.sender":{Sender:[11,3,1,""]},"eventmq.sender.Sender":{"__init__":[11,2,1,""],connect:[11,2,1,""],listen:[11,2,1,""],name:[11,1,1,""],ready:[11,1,1,""],rebuild:[11,2,1,""],unbind:[11,2,1,""],zcontext:[11,1,1,""],zsocket:[11,1,1,""]},"eventmq.utils":{classes:[12,0,0,"-"],devices:[13,0,0,"-"],messages:[15,0,0,"-"],random_characters:[14,4,1,""],settings:[16,0,0,"-"],timeutils:[17,0,0,"-"],zero_index_cmp:[14,4,1,""]},"eventmq.utils.classes":{EMQPService:[12,3,1,""],EMQdeque:[12,3,1,""],HeartbeatMixin:[12,3,1,""],ZMQReceiveMixin:[12,3,1,""],ZMQSendMixin:[12,3,1,""]},"eventmq.utils.classes.EMQPService":{"__weakref__":[12,1,1,""],is_heartbeat_enabled:[12,1,1,""],on_ack:[12,2,1,""],process_message:[12,2,1,""],reset:[12,2,1,""],send_inform:[12,2,1,""],start:[12,2,1,""]},"eventmq.utils.classes.EMQdeque":{"__init__":[12,2,1,""],"__weakref__":[12,1,1,""],append:[12,2,1,""],appendleft:[12,2,1,""],extend:[12,2,1,""],is_empty:[12,2,1,""],is_full:[12,2,1,""],is_pfull:[12,2,1,""],pop:[12,2,1,""],popleft:[12,2,1,""],remove:[12,2,1,""]},"eventmq.utils.classes.HeartbeatMixin":{"__init__":[12,2,1,""],"__weakref__":[12,1,1,""],is_dead:[12,2,1,""],reset_heartbeat_counters:[12,2,1,""],send_heartbeat:[12,2,1,""]},"eventmq.utils.classes.ZMQReceiveMixin":{"__weakref__":[12,1,1,""],recv:[12,2,1,""],recv_multipart:[12,2,1,""]},"eventmq.utils.classes.ZMQSendMixin":{"__weakref__":[12,1,1,""],send:[12,2,1,""],send_multipart:[12,2,1,""]},"eventmq.utils.devices":{generate_device_name:[13,4,1,""]},"eventmq.utils.messages":{fwd_emqp_router_message:[15,4,1,""],generate_msgid:[15,4,1,""],parse_message:[15,4,1,""],parse_router_message:[15,4,1,""],send_emqp_message:[15,4,1,""],send_emqp_router_message:[15,4,1,""]},"eventmq.utils.settings":{import_settings:[16,4,1,""]},"eventmq.utils.timeutils":{IntervalIter:[17,3,1,""],monotonic:[17,4,1,""],seconds_until:[17,4,1,""],timestamp:[17,4,1,""]},"eventmq.utils.timeutils.IntervalIter":{"__init__":[17,2,1,""],"__weakref__":[17,1,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:[14,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","attribute","Python attribute"],"2":["py","method","Python method"],"3":["py","class","Python class"],"4":["py","function","Python function"],"5":["py","exception","Python exception"],"6":["py","classmethod","Python class method"]},objtypes:{"0":"py:module","1":"py:attribute","2":"py:method","3":"py:class","4":"py:function","5":"py:exception","6":"py:classmethod"},terms:{"0mq":[8,12],"5min":17,"__init__":[6,7,9,11,12,17],"__weakref__":[12,17],"_empty_":8,"_headers_":8,"_issu":[],"_msg_":8,"_msgid_":8,"_queue_name_":8,"_recipient_id":12,"_sourc":[],"_topic_name_":8,"_unix_ts_":8,"abstract":8,"boolean":12,"case":[8,12,17],"class":[],"default":[2,6,8,9,10,11,12],"float":[12,17],"function":2,"import":[2,3,6,10,16],"int":[2,7,10,12,17],"long":[7,12],"new":10,"public":8,"return":[2,3,7,9,10,11,12,13,14,15,17],"true":[2,8,9,10,11,12],"while":8,abl:10,about:[6,8,10],absolut:3,accept:[8,12],account:[10,15],ack:[8,10],ackd_msgid:12,acknowledg:[8,10],act:[1,8],activ:[],active_job:[],actual:[6,10],add:10,add_schedul:10,add_work:10,addr:[9,11,12],address:[],after:8,agre:8,all:[2,4,6,8,9,10,11,12],allow:8,alon:2,alpha:8,alreadi:10,also:12,alwai:2,and_data:15,ani:[2,8,10],announc:10,anoth:[6,10],anyth:[],api:[],appear:7,append:12,appendleft:12,appened:10,appli:16,applic:[2,8],architectur:[],aren:[],arg2:2,arg3:2,arg:[2,6,7,9,10,11,12],argument:12,arithmet:17,around:[],ascii:13,assum:17,attempt:4,attr:7,automat:12,avail:[4,10],available_slot:10,available_work:[],awaiting_ack:12,back:[8,10,12],backend_addr:10,base:[4,7,12],basi:8,becaus:[10,12],becom:[],been:[2,12],befor:[2,7,8],begin:[10,12],belong:[8,10],below:8,best:2,between:[2,8],bin:[],block:2,bool:[2,9,11,12],boot:17,both:[7,8],box:2,broadcast:8,broker:[8,12],buffer:10,build:[2,10,11],build_module_path:2,built:8,bulid:9,busi:[],calcul:17,call:[7,10,12],callabl:[2,6,9],callback:12,can:[1,2,8,10,12,13,15],captur:12,care:13,caus:13,certain:12,chang:8,charact:14,check:[2,9,11,12],class_arg:[2,6],class_kwarg:[2,6],classmethod:10,clean_up_dead_schedul:10,clean_up_dead_work:10,client:[],clock:17,close:[12,17],cmp:14,code:[3,5,12],collect:12,colon:2,column:[],com:[],come:[2,10],comma:8,command:[2,6,8,10,12,15],compar:14,complet:8,compon:8,configur:[2,10,16],connction:[9,11],connect:[8,9,10,11,12,15],consist:8,contact:4,contain:[1,8,10,12,14],content:[],context:[9,11],contruct:12,convers:8,convienc:[7,12],correctli:[],count:[6,8,10,17],counter:[10,12],cpu:2,creat:[10,11,14],cross:[],csv:8,current:[9,11,12],custom:10,data:[10,15],deal:14,dealer:11,death:12,debug:8,decor:2,decrypt:2,def:[],defeat:8,defer:2,defer_job:2,defin:[2,6,8,9,11,12,17],deliv:8,denot:2,depth:10,dequ:12,describ:8,descript:8,detail:[2,8],detect:8,determin:8,devic:[7,12,15],dialog:8,dict:[2,6,7],dictionari:[7,8,10],did:2,die:10,differ:3,directli:[7,12],disabl:2,disconnect:[8,9],distribut:8,doe:12,doesn:7,dot:2,down:17,dst:17,duplic:10,dure:11,effort:2,either:[8,12],element:[10,12],els:[3,8],empti:8,emqdequ:[10,12],emqp:[],emqpservic:12,enabl:[2,12],encod:13,encount:[2,4],end:[2,12],enderlab:[],ensur:[2,6,8,12],entri:10,error:[2,12,13],etc:10,even:8,event:[7,12],eventloop:[],eventmqerror:4,everi:6,everyth:13,exampl:[10,12,17],except:[],exectu:10,execut:[2,8,17],exist:[4,6],explicitli:12,expos:6,extend:12,extra:8,fail:[2,8],failur:2,fair:8,fals:[2,8,9,11,12],featur:13,few:3,field:8,file:[],find:12,finish:[8,10],first:[8,10,12],fit:8,flag:[2,7],follow:[2,8,12],form:12,format:[2,6,8,10,15],forward:15,found:[4,10],foundat:8,frame:[],free:8,from:[4,7,8,9,10,11,12,17],frontend_addr:10,full:12,func:[2,6,12],fwd_emqp_router_messag:15,gener:[6,7,8,9,11,15],generate_device_nam:13,generate_msgid:15,get_available_work:10,github:[],give:2,given:10,gmtime:[],gnu:8,goal:[],good:12,guarante:[2,8],guarente:2,hand:14,handl:[6,8,10,12],happen:[2,7,10,11],hard:12,hasn:10,have:[2,12,15],haven:10,header:[],heartbeat:[],heartbeat_timeout:10,heartbeati:12,heartbeatmixin:12,heavi:8,help:[],helper:12,here:[8,10],hit:12,home:[],hope:8,how:[2,7],html:8,http:8,ident:[8,13],identifi:10,ietf:8,ignor:[8,12],immediatli:2,implement:[8,12],impli:8,import_set:16,includ:[2,8],incom:[],index:[5,10,14],indexerror:10,inform:[6,8,10,12],inform_typ:[],inherit:4,initi:[2,12],insert:[8,12],instal:3,instanc:6,instanti:[2,6],integ:10,intern:4,interpret:8,interv:[2,8,17],interval_min:[],interval_sec:[2,17],intervalit:17,intes:2,invalidmessageerror:4,is_dead:12,is_empti:12,is_ful:12,is_heartbeat_en:12,is_pful:12,isn:[10,12],issu:[3,5,8],item:12,iter:[7,10,12],iterat:12,itself:10,job:[],jobmanag:[],jobmanager_main:6,keep:[6,10],kei:[7,8,10],kick:[6,10],know:[2,6,10],kwarg2:2,kwarg:[2,6,7,9,10,11,12],languag:[],largest:10,last:[2,10,12],last_recv_heartbeat:10,later:[8,10],least:[8,12],leav:8,left:12,length:[12,14],lesser:8,let:8,lib:[],licens:[],like:[6,12,14],limit:12,list:[2,4,6,8,10,12,14,17],listen:[9,10,11,12],locat:2,log:[2,6,10],logic:[6,10],longer:4,look:12,loop:[7,10,12],lower:10,mai:[2,8,10,12],main:6,make:14,malform:4,manag:[],mani:[2,8,11],manual:8,master:8,match:12,member:10,memebership:10,merchant:8,mess:17,messag:[],message_bodi:15,message_id:15,messageerror:4,met:12,meta:[10,15],method:[2,6,7,10,12],minut:2,mod:[],mode:[],modifi:8,modul:[1,2,5,6,14],monoton:[10,12,17],more:[8,12,14],most:12,msg:[6,8,10,12,15],msg_id:[],msgid:[6,10,12],multipart:[8,12],multiprocess:6,must:[8,12],name:[2,6,8,9,10,11],need:[10,11],never:17,next:[7,10,17],noavailableworkerslotserror:[4,10],none:[2,6,9,10,11,12,13,15],noop:6,normal:12,note:[6,9,11],now:12,number:[10,17],numer:17,obj:10,object:[7,12,17],occur:12,off:[6,10],on_ack:12,on_command:[10,12],on_emqp_command:12,on_ful:12,on_heartbeat:[6,10],on_inform:10,on_readi:10,on_receive_repli:[],on_receive_request:10,on_recv:9,on_request:[6,10],on_schedul:12,onc:8,onli:[],onlin:10,option:[2,6,8,9,11,15],org:8,orient:8,origin:8,other:[2,8],otherwis:[2,6,9,11,12],out:[6,12],outgo:[6,12],overwhelm:2,own:12,packag:[],page:5,param:2,paramet:[2,6,7,9,10,11,12,13,15,17],pars:[12,15],parse_messag:15,parse_router_messag:15,part:[8,15],particular:[8,11],pass:[2,8,9],path:[2,6],payload:15,peer:[4,8,12],peergoneawayerror:4,per:10,pfull:12,pictur:8,pip:[],placehold:[6,10],point:[],poll:7,poller:[],pollin:7,pollout:7,pool:[8,10],pop:[10,12],popleft:12,port:10,portion:6,possibl:3,practic:12,prefix:[13,15],prepend:8,pretti:8,priorit:10,prioriti:10,prioritize_queue_list:10,problem:4,process:[8,10,11,12],process_messag:[6,12],process_worker_messag:10,programm:12,prop:[],proper:12,properti:[9,11,12],protocol:[],protocol_vers:12,provid:[10,12],pub:8,publish:8,purpos:8,py2:17,py3:17,python2:[],python3:13,python:12,queu:2,queue:[2,4,6,8,10,12,14],queue_messag:10,queue_nam:10,quick:2,rais:[2,4,9,10,11,12,15],random:[14,15],random_charact:14,raw:12,raw_messag:[],readi:[6,8,9,10,11],rebind:10,rebuild:11,receiv:[],received_disconnect:10,recent:[8,10],reciev:[],recip:[],recipi:[10,12,15],recipient_id:15,recommend:8,reconnect:11,recv:12,recv_multipart:12,redistribut:8,refer:[6,12,17],regist:[7,10],regular:8,reject:12,rel:3,reliabl:8,reload:10,remain:7,remot:12,remov:[8,10,12],reopen:12,rep:9,repli:[2,6,8,15],reply_request:2,repres:17,req:11,request:[],request_queu:6,requeue_work:10,requir:8,requri:[],reset:[10,12],reset_heartbeat_count:[10,12],resourc:[6,8],respond:[8,10,12],respons:[2,6,9,10,11],restart:[8,11],retri:[2,8],retry_count:2,rfc2119:8,rfc:8,right:12,robin:8,roughli:11,round:8,rout:[8,10],router:[],router_main:10,run:[2,6,8,10,12],sake:17,same:[11,14],schedul:[],scheduler_id:10,scheduler_queu:10,scheduler_zmq_id:10,search:5,second:17,seconds_until:17,see:[7,8,10,12],self:[6,10,11,12],send:[2,4,6,8,10,11,12,15],send_ack:10,send_emqp_messag:15,send_emqp_router_messag:15,send_heartbeat:[10,12],send_inform:12,send_messag:[],send_multipart:12,send_raw:[],send_readi:6,send_request:2,send_schedule_request:2,send_schedulers_heartbeat:10,send_workers_heartbeat:10,sender:[],sender_id:15,sent:[8,10,12],seper:[2,8],serv:8,server:[6,8],servic:[8,12],service_typ:12,set:[2,6,7,8,10,11,12,13],setup:6,shall:8,shalt:[],should:[2,4,7,8,9,10,11,12],shown:8,sighup:10,sighup_handl:10,signum:10,simpl:[10,14],sinc:17,singl:8,site:[],size:12,skip:[11,12],skip_zmqstream:11,slot:10,smaller:10,socket:[2,7,8,9,10,11,12,13,15],softwar:8,some:[2,6,12,14,15],someon:8,someth:[2,11,12,17],somewher:3,sort:[10,14],sourc:[3,5],spawn:6,specif:[],specifi:[8,12,14],start:[],start_valu:17,state:12,statu:8,still:10,stop:8,store:10,str:[2,6,9,10,11,12,13,14,15],string:[2,8,9,10,11,12,13,15],structur:4,sub:8,subclass:4,subcmd:6,subcommand:[2,6],subject:8,subset:8,subtract:17,success:8,successfulli:[2,12],system:[3,10],take:[10,11,12,13,15],task:[2,6],tcp:10,tell:6,term:8,than:[],thei:[2,12],them:9,thi:[1,2,4,6,7,8,9,10,11,12,13,14,17],thing:[2,6,11,12,14,15],thou:[],threshold:12,through:[8,10],thy:[],time:[],timeout:7,timestamp:[8,10,17],timeutil:[],timezon:[],tip:3,tool:8,topic:[],topolog:[],tornado:[],trace:8,track:[6,10,12],tri:2,tupl:[7,10,12,15],type:[2,8,9,10,11,12,14],type_:12,typecast:7,typeerror:9,unbind:[9,11],undefin:7,under:8,unicod:13,uniqu:[6,8,10],unit:6,univers:[],unix:8,unknownqueueerror:[4,10],unless:[6,9,11],unprioritized_iter:10,unregist:7,unschedul:[2,8],until:17,untouch:[10,15],unus:[],updat:12,upon:8,upstream:6,usag:17,usual:12,utilit:[],utlitii:12,uuid:[6,9,10,11],vagrant:[],valid:8,valu:[2,7,8,12,14,15,17],valueerror:12,variabl:12,version:[3,8,12],via:[2,17],virtualenv:[],wait:[2,7],waiting_messag:10,walk:6,want:12,warn:10,warranti:8,weak:[12,17],web:8,well:8,went:2,when:[1,2,3,4,6,8,9,10,11,12,13,14],where:[2,8,10,12,17],which:[8,10,12,13],who:[1,10],wish:[2,15],without:[8,11],word:8,work:[3,6,12],worker:[],worker_id:10,worri:8,would:[2,12,17],wrap:[],wrong:2,you:[2,3,8,10,11,12,15],your:[2,8,12],zcontext:[9,11],zero_index_cmp:14,zeromq:8,zmq:[7,8,9,10,11,12,13,15],zmqreceivemixin:12,zmqsendmixin:12,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\">classes</span></code> &#8211; Utility Classes","<code class=\"docutils literal\"><span class=\"pre\">devices</span></code> &#8211; Device Utilities","<code class=\"docutils literal\"><span class=\"pre\">utils</span></code> &#8211; Utilities","<code class=\"docutils literal\"><span class=\"pre\">messages</span></code> &#8211; Message Utilities","<code class=\"docutils literal\"><span class=\"pre\">settings</span></code> &#8211; Settings Utilities","<code class=\"docutils literal\"><span class=\"pre\">timeutils</span></code> &#8211; Time Utilites"],titleterms:{"class":12,address:8,api:0,architectur:8,client:[1,2,8],contribut:3,devic:13,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,15],mod:[],poller:7,protocol:8,receiv:9,request:8,router:[8,10],schedul:8,sender:11,set:16,specif:8,start:[],style:[],tabl:5,time:17,timeutil:17,topolog:8,util:[1,12,13,14,15,16],utilit:17,welcom:[],worker:8}}) \ No newline at end of file
diff --git a/utils.html b/utils.html
index 8d3adad..233286a 100644
--- a/utils.html
+++ b/utils.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>utils – Utilities &mdash; EventMQ 0 documentation</title> 11 <title>&lt;no title&gt; &mdash; EventMQ 0 documentation</title>
12 12
13 13
14 14
@@ -32,7 +32,7 @@
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="up" title="API Documentation" href="api.html"/> 34 <link rel="up" title="API Documentation" href="api.html"/>
35 <link rel="next" title="classes – Utility Classes" href="utils/classes.html"/> 35 <link rel="next" title="Contributing to EventMQ" href="contributing.html"/>
36 <link rel="prev" title="sender – Sender" href="sender.html"/> 36 <link rel="prev" title="sender – Sender" href="sender.html"/>
37 37
38 38
@@ -82,23 +82,8 @@
82 82
83 83
84 84
85 <ul class="current"> 85 <ul>
86<li class="toctree-l1 current"><a class="reference internal" href="api.html">API Documentation</a><ul class="current"> 86<li class="toctree-l1"><a class="reference internal" href="api.html">API Documentation</a></li>
87<li class="toctree-l2"><a class="reference internal" href="client.html"><code class="docutils literal"><span class="pre">client</span></code> &#8211; Client Utilities</a></li>
88<li class="toctree-l2"><a class="reference internal" href="exceptions.html"><code class="docutils literal"><span class="pre">exceptions</span></code> &#8211; Exceptions</a></li>
89<li class="toctree-l2"><a class="reference internal" href="jobmanager.html"><code class="docutils literal"><span class="pre">jobmanager</span></code> &#8211; Job Manager</a></li>
90<li class="toctree-l2"><a class="reference internal" href="poller.html"><code class="docutils literal"><span class="pre">poller</span></code> &#8211; Poller</a></li>
91<li class="toctree-l2"><a class="reference internal" href="receiver.html"><code class="docutils literal"><span class="pre">receiver</span></code> &#8211; Receiver</a></li>
92<li class="toctree-l2"><a class="reference internal" href="router.html"><code class="docutils literal"><span class="pre">router</span></code> &#8211; Router</a></li>
93<li class="toctree-l2"><a class="reference internal" href="sender.html"><code class="docutils literal"><span class="pre">sender</span></code> &#8211; Sender</a></li>
94<li class="toctree-l2 current"><a class="current reference internal" href=""><code class="docutils literal"><span class="pre">utils</span></code> &#8211; Utilities</a><ul>
95<li class="toctree-l3"><a class="reference internal" href="utils/classes.html"><code class="docutils literal"><span class="pre">classes</span></code> &#8211; Utility Classes</a></li>
96<li class="toctree-l3"><a class="reference internal" href="utils/messages.html"><code class="docutils literal"><span class="pre">messages</span></code> &#8211; Message Utilities</a></li>
97<li class="toctree-l3"><a class="reference internal" href="utils/timeutils.html"><code class="docutils literal"><span class="pre">timeutils</span></code> &#8211; Time Utilites</a></li>
98</ul>
99</li>
100</ul>
101</li>
102<li class="toctree-l1"><a class="reference internal" href="contributing.html">Contributing to EventMQ</a></li> 87<li class="toctree-l1"><a class="reference internal" href="contributing.html">Contributing to EventMQ</a></li>
103</ul> 88</ul>
104 89
@@ -132,7 +117,7 @@
132 117
133 <li><a href="api.html">API Documentation</a> &raquo;</li> 118 <li><a href="api.html">API Documentation</a> &raquo;</li>
134 119
135 <li><code class="docutils literal"><span class="pre">utils</span></code> &#8211; Utilities</li> 120 <li>&lt;no title&gt;</li>
136 <li class="wy-breadcrumbs-aside"> 121 <li class="wy-breadcrumbs-aside">
137 122
138 123
@@ -146,34 +131,7 @@
146 <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> 131 <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
147 <div itemprop="articleBody"> 132 <div itemprop="articleBody">
148 133
149 <span class="target" id="module-eventmq.utils"></span><div class="section" id="utils-utilities"> 134
150<h1><code class="xref py py-mod docutils literal"><span class="pre">utils</span></code> &#8211; Utilities<a class="headerlink" href="#utils-utilities" title="Permalink to this headline">¶</a></h1>
151<p>This module contains a handful of utility classes to make dealing with things
152like creating message more simple.</p>
153<div class="toctree-wrapper compound">
154<ul>
155<li class="toctree-l1"><a class="reference internal" href="utils/classes.html"><code class="docutils literal"><span class="pre">classes</span></code> &#8211; Utility Classes</a></li>
156<li class="toctree-l1"><a class="reference internal" href="utils/messages.html"><code class="docutils literal"><span class="pre">messages</span></code> &#8211; Message Utilities</a></li>
157<li class="toctree-l1"><a class="reference internal" href="utils/timeutils.html"><code class="docutils literal"><span class="pre">timeutils</span></code> &#8211; Time Utilites</a></li>
158</ul>
159</div>
160<dl class="function">
161<dt id="eventmq.utils.random_characters">
162<code class="descclassname">eventmq.utils.</code><code class="descname">random_characters</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.utils.random_characters" title="Permalink to this definition">¶</a></dt>
163<dd><table class="docutils field-list" frame="void" rules="none">
164<col class="field-name" />
165<col class="field-body" />
166<tbody valign="top">
167<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">some random characters of a specified length</td>
168</tr>
169<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/library/functions.html#str" title="(in Python v2.7)">str</a></td>
170</tr>
171</tbody>
172</table>
173</dd></dl>
174
175</div>
176
177 135
178 </div> 136 </div>
179 </div> 137 </div>
@@ -181,7 +139,7 @@ like creating message more simple.</p>
181 139
182 <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> 140 <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
183 141
184 <a href="utils/classes.html" class="btn btn-neutral float-right" title="classes – Utility Classes" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a> 142 <a href="contributing.html" class="btn btn-neutral float-right" title="Contributing to EventMQ" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
185 143
186 144
187 <a href="sender.html" class="btn btn-neutral" title="sender – Sender" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a> 145 <a href="sender.html" class="btn btn-neutral" title="sender – Sender" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
diff --git a/utils/classes.html b/utils/classes.html
index 3c681f4..7a43ac8 100644
--- a/utils/classes.html
+++ b/utils/classes.html
@@ -31,9 +31,9 @@
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="up" title="utils Utilities" href="../utils.html"/> 34 <link rel="up" title="utils - Utilities" href="index.html"/>
35 <link rel="next" title="messages – Message Utilities" href="messages.html"/> 35 <link rel="next" title="messages – Message Utilities" href="messages.html"/>
36 <link rel="prev" title="utils Utilities" href="../utils.html"/> 36 <link rel="prev" title="utils - Utilities" href="index.html"/>
37 37
38 38
39 <script src="../_static/js/modernizr.min.js"></script> 39 <script src="../_static/js/modernizr.min.js"></script>
@@ -91,10 +91,11 @@
91<li class="toctree-l2"><a class="reference internal" href="../receiver.html"><code class="docutils literal"><span class="pre">receiver</span></code> &#8211; Receiver</a></li> 91<li class="toctree-l2"><a class="reference internal" href="../receiver.html"><code class="docutils literal"><span class="pre">receiver</span></code> &#8211; Receiver</a></li>
92<li class="toctree-l2"><a class="reference internal" href="../router.html"><code class="docutils literal"><span class="pre">router</span></code> &#8211; Router</a></li> 92<li class="toctree-l2"><a class="reference internal" href="../router.html"><code class="docutils literal"><span class="pre">router</span></code> &#8211; Router</a></li>
93<li class="toctree-l2"><a class="reference internal" href="../sender.html"><code class="docutils literal"><span class="pre">sender</span></code> &#8211; Sender</a></li> 93<li class="toctree-l2"><a class="reference internal" href="../sender.html"><code class="docutils literal"><span class="pre">sender</span></code> &#8211; Sender</a></li>
94<li class="toctree-l2 current"><a class="reference internal" href="../utils.html"><code class="docutils literal"><span class="pre">utils</span></code> &#8211; Utilities</a><ul class="current"> 94<li class="toctree-l2 current"><a class="reference internal" href="index.html"><code class="docutils literal"><span class="pre">utils</span></code> - Utilities</a><ul class="current">
95<li class="toctree-l3 current"><a class="current reference internal" href=""><code class="docutils literal"><span class="pre">classes</span></code> &#8211; Utility Classes</a></li> 95<li class="toctree-l3 current"><a class="current reference internal" href=""><code class="docutils literal"><span class="pre">classes</span></code> &#8211; Utility Classes</a></li>
96<li class="toctree-l3"><a class="reference internal" href="messages.html"><code class="docutils literal"><span class="pre">messages</span></code> &#8211; Message Utilities</a></li> 96<li class="toctree-l3"><a class="reference internal" href="messages.html"><code class="docutils literal"><span class="pre">messages</span></code> &#8211; Message Utilities</a></li>
97<li class="toctree-l3"><a class="reference internal" href="timeutils.html"><code class="docutils literal"><span class="pre">timeutils</span></code> &#8211; Time Utilites</a></li> 97<li class="toctree-l3"><a class="reference internal" href="timeutils.html"><code class="docutils literal"><span class="pre">timeutils</span></code> &#8211; Time Utilites</a></li>
98<li class="toctree-l3"><a class="reference internal" href="index.html#id1"><code class="docutils literal"><span class="pre">utils</span></code> &#8211; Utilities</a></li>
98</ul> 99</ul>
99</li> 100</li>
100</ul> 101</ul>
@@ -132,7 +133,7 @@
132 133
133 <li><a href="../api.html">API Documentation</a> &raquo;</li> 134 <li><a href="../api.html">API Documentation</a> &raquo;</li>
134 135
135 <li><a href="../utils.html"><code class="docutils literal"><span class="pre">utils</span></code> &#8211; Utilities</a> &raquo;</li> 136 <li><a href="index.html"><code class="docutils literal"><span class="pre">utils</span></code> - Utilities</a> &raquo;</li>
136 137
137 <li><code class="docutils literal"><span class="pre">classes</span></code> &#8211; Utility Classes</li> 138 <li><code class="docutils literal"><span class="pre">classes</span></code> &#8211; Utility Classes</li>
138 <li class="wy-breadcrumbs-aside"> 139 <li class="wy-breadcrumbs-aside">
@@ -152,6 +153,315 @@
152<h1><code class="xref py py-mod docutils literal"><span class="pre">classes</span></code> &#8211; Utility Classes<a class="headerlink" href="#classes-utility-classes" title="Permalink to this headline">¶</a></h1> 153<h1><code class="xref py py-mod docutils literal"><span class="pre">classes</span></code> &#8211; Utility Classes<a class="headerlink" href="#classes-utility-classes" title="Permalink to this headline">¶</a></h1>
153<p>Defines some classes to use when implementing ZMQ devices</p> 154<p>Defines some classes to use when implementing ZMQ devices</p>
154<dl class="class"> 155<dl class="class">
156<dt id="eventmq.utils.classes.EMQPService">
157<em class="property">class </em><code class="descclassname">eventmq.utils.classes.</code><code class="descname">EMQPService</code><a class="headerlink" href="#eventmq.utils.classes.EMQPService" title="Permalink to this definition">¶</a></dt>
158<dd><p>Helper for devices that connect to brokers.</p>
159<p>Implements utility methods for sending EMQP messages for the following
160EMQP commands.</p>
161<blockquote>
162<div><ul class="simple">
163<li>INFORM</li>
164</ul>
165</div></blockquote>
166<p>Also implements utlitiy methods for managing long-running processes.</p>
167<dl class="docutils">
168<dt>To use you must define:</dt>
169<dd><ul class="first last simple">
170<li><cite>self.outgoing</cite> - socket where messages can be sent to the Router</li>
171<li><cite>self.SERVICE_TYPE</cite> - defines the service type for INFORM. See
172<a class="reference internal" href="#eventmq.utils.classes.EMQPService.send_inform" title="eventmq.utils.classes.EMQPService.send_inform"><code class="xref py py-meth docutils literal"><span class="pre">send_inform()</span></code></a> for more information.</li>
173<li><cite>self.poller</cite> - the poller that <cite>self.outgoing</cite> will be using.
174Usually: <cite>self.poller = eventmq.poller.Poller()</cite></li>
175</ul>
176</dd>
177</dl>
178<p>When messages are received from the router, they are processed in
179<a class="reference internal" href="#eventmq.utils.classes.EMQPService.process_message" title="eventmq.utils.classes.EMQPService.process_message"><code class="xref py py-meth docutils literal"><span class="pre">process_message()</span></code></a> which then calls <cite>on_COMMAND</cite>. This should be used
180in the event loop so if you want to respond to the SCHEDULE command, you
181would define the method <cite>on_schedule</cite> in your service class.</p>
182<p>See the code for <code class="xref py py-class docutils literal"><span class="pre">Scheduler</span></code> and <code class="xref py py-class docutils literal"><span class="pre">JobManager</span></code> for examples.</p>
183<dl class="attribute">
184<dt id="eventmq.utils.classes.EMQPService.__weakref__">
185<code class="descname">__weakref__</code><a class="headerlink" href="#eventmq.utils.classes.EMQPService.__weakref__" title="Permalink to this definition">¶</a></dt>
186<dd><p>list of weak references to the object (if defined)</p>
187</dd></dl>
188
189<dl class="attribute">
190<dt id="eventmq.utils.classes.EMQPService.is_heartbeat_enabled">
191<code class="descname">is_heartbeat_enabled</code><a class="headerlink" href="#eventmq.utils.classes.EMQPService.is_heartbeat_enabled" title="Permalink to this definition">¶</a></dt>
192<dd><p>Property to check if heartbeating is enabled. Useful when certain
193properties must be updated for heartbeating
194:returns: bool - True if heartbeating is enabled, False if it isn&#8217;t</p>
195</dd></dl>
196
197<dl class="method">
198<dt id="eventmq.utils.classes.EMQPService.on_ack">
199<code class="descname">on_ack</code><span class="sig-paren">(</span><em>msgid</em>, <em>ackd_msgid</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.utils.classes.EMQPService.on_ack" title="Permalink to this definition">¶</a></dt>
200<dd><p>Sets <code class="xref py py-attr docutils literal"><span class="pre">awaiting_ack</span></code> to False</p>
201</dd></dl>
202
203<dl class="method">
204<dt id="eventmq.utils.classes.EMQPService.process_message">
205<code class="descname">process_message</code><span class="sig-paren">(</span><em>msg</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.utils.classes.EMQPService.process_message" title="Permalink to this definition">¶</a></dt>
206<dd><p>Processes a message. Processing takes form of calling an
207<cite>on_EMQP_COMMAND</cite> method. The method must accept <cite>msgid</cite> and <cite>message</cite>
208as the first arguments.</p>
209<table class="docutils field-list" frame="void" rules="none">
210<col class="field-name" />
211<col class="field-body" />
212<tbody valign="top">
213<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>msg</strong> &#8211; The message received from the socket to parse and process.</td>
214</tr>
215</tbody>
216</table>
217</dd></dl>
218
219<dl class="method">
220<dt id="eventmq.utils.classes.EMQPService.reset">
221<code class="descname">reset</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.utils.classes.EMQPService.reset" title="Permalink to this definition">¶</a></dt>
222<dd><p>Resets the current connection by closing and reopening the socket</p>
223</dd></dl>
224
225<dl class="method">
226<dt id="eventmq.utils.classes.EMQPService.send_inform">
227<code class="descname">send_inform</code><span class="sig-paren">(</span><em>queue=None</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.utils.classes.EMQPService.send_inform" title="Permalink to this definition">¶</a></dt>
228<dd><p>Queues an INFORM command to <cite>self.outgoing</cite>.</p>
229<table class="docutils field-list" frame="void" rules="none">
230<col class="field-name" />
231<col class="field-body" />
232<tbody valign="top">
233<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
234<li><strong>type</strong> (<a class="reference external" href="https://docs.python.org/library/functions.html#str" title="(in Python v2.7)"><em>str</em></a>) &#8211; Either &#8216;worker&#8217; or &#8216;scheduler&#8217;</li>
235<li><strong>queue</strong> (<a class="reference external" href="https://docs.python.org/library/functions.html#list" title="(in Python v2.7)"><em>list</em></a>) &#8211; <ul>
236<li>For &#8216;worker&#8217; type, the queues the worker is listening on</li>
237<li>Ignored for &#8216;scheduler&#8217; type</li>
238</ul>
239</li>
240</ul>
241</td>
242</tr>
243<tr class="field-even field"><th class="field-name">Raises:</th><td class="field-body"><p class="first last"><code class="xref py py-exc docutils literal"><span class="pre">ValueError</span></code> &#8211; When <cite>type_</cite> does not match a specified type</p>
244</td>
245</tr>
246</tbody>
247</table>
248</dd></dl>
249
250<dl class="method">
251<dt id="eventmq.utils.classes.EMQPService.start">
252<code class="descname">start</code><span class="sig-paren">(</span><em>addr</em>, <em>queues='default'</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.utils.classes.EMQPService.start" title="Permalink to this definition">¶</a></dt>
253<dd><p>Connect to <cite>addr</cite> and begin listening for job requests</p>
254<table class="docutils field-list" frame="void" rules="none">
255<col class="field-name" />
256<col class="field-body" />
257<tbody valign="top">
258<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>addr</strong> (<a class="reference external" href="https://docs.python.org/library/functions.html#str" title="(in Python v2.7)"><em>str</em></a>) &#8211; connection string to connect to</td>
259</tr>
260</tbody>
261</table>
262</dd></dl>
263
264</dd></dl>
265
266<dl class="class">
267<dt id="eventmq.utils.classes.EMQdeque">
268<em class="property">class </em><code class="descclassname">eventmq.utils.classes.</code><code class="descname">EMQdeque</code><span class="sig-paren">(</span><em>full=None</em>, <em>pfull=None</em>, <em>on_full=None</em>, <em>initial=()</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.utils.classes.EMQdeque" title="Permalink to this definition">¶</a></dt>
269<dd><p>EventMQ deque based on python&#8217;s collections.deque with full and
270programmable full.</p>
271<div class="admonition note">
272<p class="first admonition-title">Note</p>
273<p class="last">Because of the programmable full, some of the methods that would
274normally return None return a boolean value that should be captured and
275checked to ensure proper error handling.</p>
276</div>
277<dl class="method">
278<dt id="eventmq.utils.classes.EMQdeque.__init__">
279<code class="descname">__init__</code><span class="sig-paren">(</span><em>full=None</em>, <em>pfull=None</em>, <em>on_full=None</em>, <em>initial=()</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.utils.classes.EMQdeque.__init__" title="Permalink to this definition">¶</a></dt>
280<dd><table class="docutils field-list" frame="void" rules="none">
281<col class="field-name" />
282<col class="field-body" />
283<tbody valign="top">
284<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
285<li><strong>full</strong> (<a class="reference external" href="https://docs.python.org/library/functions.html#int" title="(in Python v2.7)"><em>int</em></a>) &#8211; Hard limit on deque size. Rejects adding elements.
286Default: 0 - no limit</li>
287<li><strong>pfull</strong> (<a class="reference external" href="https://docs.python.org/library/functions.html#int" title="(in Python v2.7)"><em>int</em></a>) &#8211; Programmable limit on deque size, defaults
288to <code class="docutils literal"><span class="pre">full</span></code> length</li>
289<li><strong>on_full</strong> (<em>func</em>) &#8211; callback to call when <code class="docutils literal"><span class="pre">full</span></code> limit is hit</li>
290<li><strong>initial</strong> (<a class="reference external" href="https://docs.python.org/library/functions.html#iter" title="(in Python v2.7)"><em>iter</em></a>) &#8211; The initial iteratable used to contruct the deque</li>
291</ul>
292</td>
293</tr>
294</tbody>
295</table>
296</dd></dl>
297
298<dl class="attribute">
299<dt id="eventmq.utils.classes.EMQdeque.__weakref__">
300<code class="descname">__weakref__</code><a class="headerlink" href="#eventmq.utils.classes.EMQdeque.__weakref__" title="Permalink to this definition">¶</a></dt>
301<dd><p>list of weak references to the object (if defined)</p>
302</dd></dl>
303
304<dl class="method">
305<dt id="eventmq.utils.classes.EMQdeque.append">
306<code class="descname">append</code><span class="sig-paren">(</span><em>item</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.utils.classes.EMQdeque.append" title="Permalink to this definition">¶</a></dt>
307<dd><p>Append item to the right this deque if the deque isn&#8217;t full.</p>
308<div class="admonition note">
309<p class="first admonition-title">Note</p>
310<p class="last">You should check the return value of this call and handle the cases
311where False is returned.</p>
312</div>
313<table class="docutils field-list" frame="void" rules="none">
314<col class="field-name" />
315<col class="field-body" />
316<tbody valign="top">
317<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">True if <code class="docutils literal"><span class="pre">item</span></code> was successfully added, False if the deque
318is at the <code class="docutils literal"><span class="pre">self.full</span></code> limit. If it is, <code class="docutils literal"><span class="pre">self.on_full</span></code> is
319called.</td>
320</tr>
321<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/library/functions.html#bool" title="(in Python v2.7)">bool</a></td>
322</tr>
323</tbody>
324</table>
325</dd></dl>
326
327<dl class="method">
328<dt id="eventmq.utils.classes.EMQdeque.appendleft">
329<code class="descname">appendleft</code><span class="sig-paren">(</span><em>item</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.utils.classes.EMQdeque.appendleft" title="Permalink to this definition">¶</a></dt>
330<dd><p>Append item to the left this deque if the deque isn&#8217;t full.</p>
331<div class="admonition note">
332<p class="first admonition-title">Note</p>
333<p class="last">You should check the return value of this call and handle the cases
334where False is returned.</p>
335</div>
336<table class="docutils field-list" frame="void" rules="none">
337<col class="field-name" />
338<col class="field-body" />
339<tbody valign="top">
340<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">True if <code class="docutils literal"><span class="pre">item</span></code> was successfully added, False if the deque
341is at the <code class="docutils literal"><span class="pre">self.full</span></code> limit. If it is, <code class="docutils literal"><span class="pre">self.on_full</span></code> is
342called.</td>
343</tr>
344<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/library/functions.html#bool" title="(in Python v2.7)">bool</a></td>
345</tr>
346</tbody>
347</table>
348</dd></dl>
349
350<dl class="method">
351<dt id="eventmq.utils.classes.EMQdeque.extend">
352<code class="descname">extend</code><span class="sig-paren">(</span><em>iterable</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.utils.classes.EMQdeque.extend" title="Permalink to this definition">¶</a></dt>
353<dd><p>append <code class="docutils literal"><span class="pre">iterable</span></code> to the right (end) of the deque</p>
354<table class="docutils field-list" frame="void" rules="none">
355<col class="field-name" />
356<col class="field-body" />
357<tbody valign="top">
358<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">True if <code class="docutils literal"><span class="pre">item</span></code> was successfully added, False if the deque
359is at the <code class="docutils literal"><span class="pre">self.full</span></code> limit. If it is, <code class="docutils literal"><span class="pre">self.on_full</span></code> is
360called.</td>
361</tr>
362<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/library/functions.html#bool" title="(in Python v2.7)">bool</a></td>
363</tr>
364</tbody>
365</table>
366</dd></dl>
367
368<dl class="method">
369<dt id="eventmq.utils.classes.EMQdeque.is_empty">
370<code class="descname">is_empty</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.utils.classes.EMQdeque.is_empty" title="Permalink to this definition">¶</a></dt>
371<dd><p>Check to see if the deque contains no items.</p>
372<table class="docutils field-list" frame="void" rules="none">
373<col class="field-name" />
374<col class="field-body" />
375<tbody valign="top">
376<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">True if the deque contains 0 items. False otherwise</td>
377</tr>
378<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/library/functions.html#bool" title="(in Python v2.7)">bool</a></td>
379</tr>
380</tbody>
381</table>
382</dd></dl>
383
384<dl class="method">
385<dt id="eventmq.utils.classes.EMQdeque.is_full">
386<code class="descname">is_full</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.utils.classes.EMQdeque.is_full" title="Permalink to this definition">¶</a></dt>
387<dd><p>Check to see if the deque contains <code class="docutils literal"><span class="pre">self.full</span></code> items.</p>
388<table class="docutils field-list" frame="void" rules="none">
389<col class="field-name" />
390<col class="field-body" />
391<tbody valign="top">
392<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">True if the deque contains at least <code class="docutils literal"><span class="pre">full</span></code> items. False
393otherwise</td>
394</tr>
395<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/library/functions.html#bool" title="(in Python v2.7)">bool</a></td>
396</tr>
397</tbody>
398</table>
399</dd></dl>
400
401<dl class="method">
402<dt id="eventmq.utils.classes.EMQdeque.is_pfull">
403<code class="descname">is_pfull</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.utils.classes.EMQdeque.is_pfull" title="Permalink to this definition">¶</a></dt>
404<dd><p>Check to see if the deque contains <code class="docutils literal"><span class="pre">self.pfull</span></code> items.</p>
405<table class="docutils field-list" frame="void" rules="none">
406<col class="field-name" />
407<col class="field-body" />
408<tbody valign="top">
409<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">True if the deque contains at least <code class="docutils literal"><span class="pre">pfull</span></code> items.
410False otherwise</td>
411</tr>
412<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/library/functions.html#bool" title="(in Python v2.7)">bool</a></td>
413</tr>
414</tbody>
415</table>
416</dd></dl>
417
418<dl class="method">
419<dt id="eventmq.utils.classes.EMQdeque.pop">
420<code class="descname">pop</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.utils.classes.EMQdeque.pop" title="Permalink to this definition">¶</a></dt>
421<dd><table class="docutils field-list" frame="void" rules="none">
422<col class="field-name" />
423<col class="field-body" />
424<tbody valign="top">
425<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">the last (right-most) element of the deque</td>
426</tr>
427<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/library/functions.html#object" title="(in Python v2.7)">object</a></td>
428</tr>
429</tbody>
430</table>
431</dd></dl>
432
433<dl class="method">
434<dt id="eventmq.utils.classes.EMQdeque.popleft">
435<code class="descname">popleft</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.utils.classes.EMQdeque.popleft" title="Permalink to this definition">¶</a></dt>
436<dd><table class="docutils field-list" frame="void" rules="none">
437<col class="field-name" />
438<col class="field-body" />
439<tbody valign="top">
440<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">the first (left-most) element of the deque</td>
441</tr>
442<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/library/functions.html#object" title="(in Python v2.7)">object</a></td>
443</tr>
444</tbody>
445</table>
446</dd></dl>
447
448<dl class="method">
449<dt id="eventmq.utils.classes.EMQdeque.remove">
450<code class="descname">remove</code><span class="sig-paren">(</span><em>item</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.utils.classes.EMQdeque.remove" title="Permalink to this definition">¶</a></dt>
451<dd><p>Remove <code class="docutils literal"><span class="pre">item</span></code> from the deque.</p>
452<table class="docutils field-list" frame="void" rules="none">
453<col class="field-name" />
454<col class="field-body" />
455<tbody valign="top">
456<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>item</strong> (<a class="reference external" href="https://docs.python.org/library/functions.html#object" title="(in Python v2.7)"><em>object</em></a>) &#8211; The item to remove from the deque</td>
457</tr>
458</tbody>
459</table>
460</dd></dl>
461
462</dd></dl>
463
464<dl class="class">
155<dt id="eventmq.utils.classes.HeartbeatMixin"> 465<dt id="eventmq.utils.classes.HeartbeatMixin">
156<em class="property">class </em><code class="descclassname">eventmq.utils.classes.</code><code class="descname">HeartbeatMixin</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.utils.classes.HeartbeatMixin" title="Permalink to this definition">¶</a></dt> 466<em class="property">class </em><code class="descclassname">eventmq.utils.classes.</code><code class="descname">HeartbeatMixin</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.utils.classes.HeartbeatMixin" title="Permalink to this definition">¶</a></dt>
157<dd><p>Provides methods for implementing heartbeats</p> 467<dd><p>Provides methods for implementing heartbeats</p>
@@ -305,7 +615,7 @@ specify the the recipient id of the remote socket</li>
305 <a href="messages.html" class="btn btn-neutral float-right" title="messages – Message Utilities" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a> 615 <a href="messages.html" class="btn btn-neutral float-right" title="messages – Message Utilities" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
306 616
307 617
308 <a href="../utils.html" class="btn btn-neutral" title="utils – Utilities" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a> 618 <a href="index.html" class="btn btn-neutral" title="utils - Utilities" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
309 619
310 </div> 620 </div>
311 621
diff --git a/utils/devices.html b/utils/devices.html
new file mode 100644
index 0000000..b5d254a
--- /dev/null
+++ b/utils/devices.html
@@ -0,0 +1,243 @@
1
2
3<!DOCTYPE html>
4<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
5<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
6<head>
7 <meta charset="utf-8">
8
9 <meta name="viewport" content="width=device-width, initial-scale=1.0">
10
11 <title>devices – Device Utilities &mdash; EventMQ 0 documentation</title>
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
28
29
30
31
32
33 <link rel="top" title="EventMQ 0 documentation" href="../index.html"/>
34 <link rel="up" title="utils – Utilities" href="index.html"/>
35 <link rel="next" title="messages – Message Utilities" href="messages.html"/>
36 <link rel="prev" title="classes – Utility Classes" href="classes.html"/>
37
38
39 <script src="../_static/js/modernizr.min.js"></script>
40
41</head>
42
43<body class="wy-body-for-nav" role="document">
44
45 <div class="wy-grid-for-nav">
46
47
48 <nav data-toggle="wy-nav-shift" class="wy-nav-side">
49 <div class="wy-side-scroll">
50 <div class="wy-side-nav-search">
51
52
53
54 <a href="../index.html" class="icon icon-home"> EventMQ
55
56
57
58 </a>
59
60
61
62
63 <div class="version">
64 0
65 </div>
66
67
68
69
70<div role="search">
71 <form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
72 <input type="text" name="q" placeholder="Search docs" />
73 <input type="hidden" name="check_keywords" value="yes" />
74 <input type="hidden" name="area" value="default" />
75 </form>
76</div>
77
78
79 </div>
80
81 <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
82
83
84
85 <ul class="current">
86<li class="toctree-l1 current"><a class="reference internal" href="../api.html">API Documentation</a><ul class="current">
87<li class="toctree-l2"><a class="reference internal" href="../client.html"><code class="docutils literal"><span class="pre">client</span></code> &#8211; Client Utilities</a></li>
88<li class="toctree-l2"><a class="reference internal" href="../exceptions.html"><code class="docutils literal"><span class="pre">exceptions</span></code> &#8211; Exceptions</a></li>
89<li class="toctree-l2"><a class="reference internal" href="../jobmanager.html"><code class="docutils literal"><span class="pre">jobmanager</span></code> &#8211; Job Manager</a></li>
90<li class="toctree-l2"><a class="reference internal" href="../poller.html"><code class="docutils literal"><span class="pre">poller</span></code> &#8211; Poller</a></li>
91<li class="toctree-l2"><a class="reference internal" href="../receiver.html"><code class="docutils literal"><span class="pre">receiver</span></code> &#8211; Receiver</a></li>
92<li class="toctree-l2"><a class="reference internal" href="../router.html"><code class="docutils literal"><span class="pre">router</span></code> &#8211; Router</a></li>
93<li class="toctree-l2"><a class="reference internal" href="../sender.html"><code class="docutils literal"><span class="pre">sender</span></code> &#8211; Sender</a></li>
94<li class="toctree-l2 current"><a class="reference internal" href="index.html"><code class="docutils literal"><span class="pre">utils</span></code> &#8211; Utilities</a><ul class="current">
95<li class="toctree-l3"><a class="reference internal" href="classes.html"><code class="docutils literal"><span class="pre">classes</span></code> &#8211; Utility Classes</a></li>
96<li class="toctree-l3 current"><a class="current reference internal" href=""><code class="docutils literal"><span class="pre">devices</span></code> &#8211; Device Utilities</a></li>
97<li class="toctree-l3"><a class="reference internal" href="messages.html"><code class="docutils literal"><span class="pre">messages</span></code> &#8211; Message Utilities</a></li>
98<li class="toctree-l3"><a class="reference internal" href="timeutils.html"><code class="docutils literal"><span class="pre">timeutils</span></code> &#8211; Time Utilites</a></li>
99</ul>
100</li>
101</ul>
102</li>
103<li class="toctree-l1"><a class="reference internal" href="../contributing.html">Contributing to EventMQ</a></li>
104</ul>
105
106
107
108 </div>
109 </div>
110 </nav>
111
112 <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
113
114
115 <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
116 <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
117 <a href="../index.html">EventMQ</a>
118 </nav>
119
120
121
122 <div class="wy-nav-content">
123 <div class="rst-content">
124
125
126
127
128
129
130<div role="navigation" aria-label="breadcrumbs navigation">
131 <ul class="wy-breadcrumbs">
132 <li><a href="../index.html">Docs</a> &raquo;</li>
133
134 <li><a href="../api.html">API Documentation</a> &raquo;</li>
135
136 <li><a href="index.html"><code class="docutils literal"><span class="pre">utils</span></code> &#8211; Utilities</a> &raquo;</li>
137
138 <li><code class="docutils literal"><span class="pre">devices</span></code> &#8211; Device Utilities</li>
139 <li class="wy-breadcrumbs-aside">
140
141
142 <a href="../_sources/utils/devices.txt" rel="nofollow"> View page source</a>
143
144
145 </li>
146 </ul>
147 <hr/>
148</div>
149 <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
150 <div itemprop="articleBody">
151
152 <span class="target" id="module-eventmq.utils.devices"></span><div class="section" id="devices-device-utilities">
153<h1><code class="xref py py-mod docutils literal"><span class="pre">devices</span></code> &#8211; Device Utilities<a class="headerlink" href="#devices-device-utilities" title="Permalink to this headline">¶</a></h1>
154<dl class="function">
155<dt id="eventmq.utils.devices.generate_device_name">
156<code class="descclassname">eventmq.utils.devices.</code><code class="descname">generate_device_name</code><span class="sig-paren">(</span><em>prefix=None</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.utils.devices.generate_device_name" title="Permalink to this definition">¶</a></dt>
157<dd><p>This takes care of the python3 &#8216;everything is unicode&#8217; feature which
158causes errors when setting the IDENTITY of the ZMQ socket.</p>
159<table class="docutils field-list" frame="void" rules="none">
160<col class="field-name" />
161<col class="field-body" />
162<tbody valign="top">
163<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>prefix</strong> (<a class="reference external" href="https://docs.python.org/library/functions.html#str" title="(in Python v2.7)"><em>str</em></a>) &#8211; Prefix the id with this string.</td>
164</tr>
165</tbody>
166</table>
167<dl class="docutils">
168<dt>Returns (str) An ascii encoded string that can be used as an IDENTITY for a</dt>
169<dd>ZMQ socket.</dd>
170</dl>
171</dd></dl>
172
173</div>
174
175
176 </div>
177 </div>
178 <footer>
179
180 <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
181
182 <a href="messages.html" class="btn btn-neutral float-right" title="messages – Message Utilities" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
183
184
185 <a href="classes.html" class="btn btn-neutral" title="classes – Utility Classes" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
186
187 </div>
188
189
190 <hr/>
191
192 <div role="contentinfo">
193 <p>
194 &copy; Copyright 2015, eventboard.io.
195
196 </p>
197 </div>
198 Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
199
200</footer>
201
202 </div>
203 </div>
204
205 </section>
206
207 </div>
208
209
210
211
212
213 <script type="text/javascript">
214 var DOCUMENTATION_OPTIONS = {
215 URL_ROOT:'../',
216 VERSION:'0',
217 COLLAPSE_INDEX:false,
218 FILE_SUFFIX:'.html',
219 HAS_SOURCE: true
220 };
221 </script>
222 <script type="text/javascript" src="../_static/jquery.js"></script>
223 <script type="text/javascript" src="../_static/underscore.js"></script>
224 <script type="text/javascript" src="../_static/doctools.js"></script>
225
226
227
228
229
230 <script type="text/javascript" src="../_static/js/theme.js"></script>
231
232
233
234
235 <script type="text/javascript">
236 jQuery(function () {
237 SphinxRtdTheme.StickyNav.enable();
238 });
239 </script>
240
241
242</body>
243</html> \ No newline at end of file
diff --git a/utils/index.html b/utils/index.html
new file mode 100644
index 0000000..d58c3a3
--- /dev/null
+++ b/utils/index.html
@@ -0,0 +1,256 @@
1
2
3<!DOCTYPE html>
4<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
5<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
6<head>
7 <meta charset="utf-8">
8
9 <meta name="viewport" content="width=device-width, initial-scale=1.0">
10
11 <title>utils – Utilities &mdash; EventMQ 0 documentation</title>
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
28
29
30
31
32
33 <link rel="top" title="EventMQ 0 documentation" href="../index.html"/>
34 <link rel="up" title="API Documentation" href="../api.html"/>
35 <link rel="next" title="classes – Utility Classes" href="classes.html"/>
36 <link rel="prev" title="sender – Sender" href="../sender.html"/>
37
38
39 <script src="../_static/js/modernizr.min.js"></script>
40
41</head>
42
43<body class="wy-body-for-nav" role="document">
44
45 <div class="wy-grid-for-nav">
46
47
48 <nav data-toggle="wy-nav-shift" class="wy-nav-side">
49 <div class="wy-side-scroll">
50 <div class="wy-side-nav-search">
51
52
53
54 <a href="../index.html" class="icon icon-home"> EventMQ
55
56
57
58 </a>
59
60
61
62
63 <div class="version">
64 0
65 </div>
66
67
68
69
70<div role="search">
71 <form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
72 <input type="text" name="q" placeholder="Search docs" />
73 <input type="hidden" name="check_keywords" value="yes" />
74 <input type="hidden" name="area" value="default" />
75 </form>
76</div>
77
78
79 </div>
80
81 <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
82
83
84
85 <ul class="current">
86<li class="toctree-l1 current"><a class="reference internal" href="../api.html">API Documentation</a><ul class="current">
87<li class="toctree-l2"><a class="reference internal" href="../client.html"><code class="docutils literal"><span class="pre">client</span></code> &#8211; Client Utilities</a></li>
88<li class="toctree-l2"><a class="reference internal" href="../exceptions.html"><code class="docutils literal"><span class="pre">exceptions</span></code> &#8211; Exceptions</a></li>
89<li class="toctree-l2"><a class="reference internal" href="../jobmanager.html"><code class="docutils literal"><span class="pre">jobmanager</span></code> &#8211; Job Manager</a></li>
90<li class="toctree-l2"><a class="reference internal" href="../poller.html"><code class="docutils literal"><span class="pre">poller</span></code> &#8211; Poller</a></li>
91<li class="toctree-l2"><a class="reference internal" href="../receiver.html"><code class="docutils literal"><span class="pre">receiver</span></code> &#8211; Receiver</a></li>
92<li class="toctree-l2"><a class="reference internal" href="../router.html"><code class="docutils literal"><span class="pre">router</span></code> &#8211; Router</a></li>
93<li class="toctree-l2"><a class="reference internal" href="../sender.html"><code class="docutils literal"><span class="pre">sender</span></code> &#8211; Sender</a></li>
94<li class="toctree-l2 current"><a class="current reference internal" href=""><code class="docutils literal"><span class="pre">utils</span></code> &#8211; Utilities</a><ul>
95<li class="toctree-l3"><a class="reference internal" href="classes.html"><code class="docutils literal"><span class="pre">classes</span></code> &#8211; Utility Classes</a></li>
96<li class="toctree-l3"><a class="reference internal" href="devices.html"><code class="docutils literal"><span class="pre">devices</span></code> &#8211; Device Utilities</a></li>
97<li class="toctree-l3"><a class="reference internal" href="messages.html"><code class="docutils literal"><span class="pre">messages</span></code> &#8211; Message Utilities</a></li>
98<li class="toctree-l3"><a class="reference internal" href="settings.html"><code class="docutils literal"><span class="pre">settings</span></code> &#8211; Settings Utilities</a></li>
99<li class="toctree-l3"><a class="reference internal" href="timeutils.html"><code class="docutils literal"><span class="pre">timeutils</span></code> &#8211; Time Utilites</a></li>
100</ul>
101</li>
102</ul>
103</li>
104<li class="toctree-l1"><a class="reference internal" href="../contributing.html">Contributing to EventMQ</a></li>
105</ul>
106
107
108
109 </div>
110 </div>
111 </nav>
112
113 <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
114
115
116 <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
117 <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
118 <a href="../index.html">EventMQ</a>
119 </nav>
120
121
122
123 <div class="wy-nav-content">
124 <div class="rst-content">
125
126
127
128
129
130
131<div role="navigation" aria-label="breadcrumbs navigation">
132 <ul class="wy-breadcrumbs">
133 <li><a href="../index.html">Docs</a> &raquo;</li>
134
135 <li><a href="../api.html">API Documentation</a> &raquo;</li>
136
137 <li><code class="docutils literal"><span class="pre">utils</span></code> &#8211; Utilities</li>
138 <li class="wy-breadcrumbs-aside">
139
140
141 <a href="../_sources/utils/index.txt" rel="nofollow"> View page source</a>
142
143
144 </li>
145 </ul>
146 <hr/>
147</div>
148 <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
149 <div itemprop="articleBody">
150
151 <span class="target" id="module-eventmq.utils"></span><div class="section" id="utils-utilities">
152<h1><code class="xref py py-mod docutils literal"><span class="pre">utils</span></code> &#8211; Utilities<a class="headerlink" href="#utils-utilities" title="Permalink to this headline">¶</a></h1>
153<p>This module contains a handful of utility classes to make dealing with things
154like creating message more simple.</p>
155<div class="toctree-wrapper compound">
156<ul>
157<li class="toctree-l1"><a class="reference internal" href="classes.html"><code class="docutils literal"><span class="pre">classes</span></code> &#8211; Utility Classes</a></li>
158<li class="toctree-l1"><a class="reference internal" href="devices.html"><code class="docutils literal"><span class="pre">devices</span></code> &#8211; Device Utilities</a></li>
159<li class="toctree-l1"><a class="reference internal" href="messages.html"><code class="docutils literal"><span class="pre">messages</span></code> &#8211; Message Utilities</a></li>
160<li class="toctree-l1"><a class="reference internal" href="settings.html"><code class="docutils literal"><span class="pre">settings</span></code> &#8211; Settings Utilities</a></li>
161<li class="toctree-l1"><a class="reference internal" href="timeutils.html"><code class="docutils literal"><span class="pre">timeutils</span></code> &#8211; Time Utilites</a></li>
162</ul>
163</div>
164<dl class="function">
165<dt id="eventmq.utils.random_characters">
166<code class="descclassname">eventmq.utils.</code><code class="descname">random_characters</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.utils.random_characters" title="Permalink to this definition">¶</a></dt>
167<dd><table class="docutils field-list" frame="void" rules="none">
168<col class="field-name" />
169<col class="field-body" />
170<tbody valign="top">
171<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">some random characters of a specified length</td>
172</tr>
173<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/library/functions.html#str" title="(in Python v2.7)">str</a></td>
174</tr>
175</tbody>
176</table>
177</dd></dl>
178
179<dl class="function">
180<dt id="eventmq.utils.zero_index_cmp">
181<code class="descclassname">eventmq.utils.</code><code class="descname">zero_index_cmp</code><span class="sig-paren">(</span><em>a</em>, <em>b</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.utils.zero_index_cmp" title="Permalink to this definition">¶</a></dt>
182<dd><p>same as <code class="docutils literal"><span class="pre">cmp</span></code> but using the 0-index in a list as the compare value. Used
183when sorting the values in <code class="xref py py-attr docutils literal"><span class="pre">router.Router.queues</span></code>.</p>
184</dd></dl>
185
186</div>
187
188
189 </div>
190 </div>
191 <footer>
192
193 <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
194
195 <a href="classes.html" class="btn btn-neutral float-right" title="classes – Utility Classes" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
196
197
198 <a href="../sender.html" class="btn btn-neutral" title="sender – Sender" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
199
200 </div>
201
202
203 <hr/>
204
205 <div role="contentinfo">
206 <p>
207 &copy; Copyright 2015, eventboard.io.
208
209 </p>
210 </div>
211 Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
212
213</footer>
214
215 </div>
216 </div>
217
218 </section>
219
220 </div>
221
222
223
224
225
226 <script type="text/javascript">
227 var DOCUMENTATION_OPTIONS = {
228 URL_ROOT:'../',
229 VERSION:'0',
230 COLLAPSE_INDEX:false,
231 FILE_SUFFIX:'.html',
232 HAS_SOURCE: true
233 };
234 </script>
235 <script type="text/javascript" src="../_static/jquery.js"></script>
236 <script type="text/javascript" src="../_static/underscore.js"></script>
237 <script type="text/javascript" src="../_static/doctools.js"></script>
238
239
240
241
242
243 <script type="text/javascript" src="../_static/js/theme.js"></script>
244
245
246
247
248 <script type="text/javascript">
249 jQuery(function () {
250 SphinxRtdTheme.StickyNav.enable();
251 });
252 </script>
253
254
255</body>
256</html> \ No newline at end of file
diff --git a/utils/settings.html b/utils/settings.html
new file mode 100644
index 0000000..65fa6ff
--- /dev/null
+++ b/utils/settings.html
@@ -0,0 +1,231 @@
1
2
3<!DOCTYPE html>
4<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
5<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
6<head>
7 <meta charset="utf-8">
8
9 <meta name="viewport" content="width=device-width, initial-scale=1.0">
10
11 <title>settings – Settings Utilities &mdash; EventMQ 0 documentation</title>
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
28
29
30
31
32
33 <link rel="top" title="EventMQ 0 documentation" href="../index.html"/>
34 <link rel="up" title="utils – Utilities" href="index.html"/>
35 <link rel="next" title="timeutils – Time Utilites" href="timeutils.html"/>
36 <link rel="prev" title="messages – Message Utilities" href="messages.html"/>
37
38
39 <script src="../_static/js/modernizr.min.js"></script>
40
41</head>
42
43<body class="wy-body-for-nav" role="document">
44
45 <div class="wy-grid-for-nav">
46
47
48 <nav data-toggle="wy-nav-shift" class="wy-nav-side">
49 <div class="wy-side-scroll">
50 <div class="wy-side-nav-search">
51
52
53
54 <a href="../index.html" class="icon icon-home"> EventMQ
55
56
57
58 </a>
59
60
61
62
63 <div class="version">
64 0
65 </div>
66
67
68
69
70<div role="search">
71 <form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
72 <input type="text" name="q" placeholder="Search docs" />
73 <input type="hidden" name="check_keywords" value="yes" />
74 <input type="hidden" name="area" value="default" />
75 </form>
76</div>
77
78
79 </div>
80
81 <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
82
83
84
85 <ul class="current">
86<li class="toctree-l1 current"><a class="reference internal" href="../api.html">API Documentation</a><ul class="current">
87<li class="toctree-l2"><a class="reference internal" href="../client.html"><code class="docutils literal"><span class="pre">client</span></code> &#8211; Client Utilities</a></li>
88<li class="toctree-l2"><a class="reference internal" href="../exceptions.html"><code class="docutils literal"><span class="pre">exceptions</span></code> &#8211; Exceptions</a></li>
89<li class="toctree-l2"><a class="reference internal" href="../jobmanager.html"><code class="docutils literal"><span class="pre">jobmanager</span></code> &#8211; Job Manager</a></li>
90<li class="toctree-l2"><a class="reference internal" href="../poller.html"><code class="docutils literal"><span class="pre">poller</span></code> &#8211; Poller</a></li>
91<li class="toctree-l2"><a class="reference internal" href="../receiver.html"><code class="docutils literal"><span class="pre">receiver</span></code> &#8211; Receiver</a></li>
92<li class="toctree-l2"><a class="reference internal" href="../router.html"><code class="docutils literal"><span class="pre">router</span></code> &#8211; Router</a></li>
93<li class="toctree-l2"><a class="reference internal" href="../sender.html"><code class="docutils literal"><span class="pre">sender</span></code> &#8211; Sender</a></li>
94<li class="toctree-l2 current"><a class="reference internal" href="index.html"><code class="docutils literal"><span class="pre">utils</span></code> &#8211; Utilities</a><ul class="current">
95<li class="toctree-l3"><a class="reference internal" href="classes.html"><code class="docutils literal"><span class="pre">classes</span></code> &#8211; Utility Classes</a></li>
96<li class="toctree-l3"><a class="reference internal" href="devices.html"><code class="docutils literal"><span class="pre">devices</span></code> &#8211; Device Utilities</a></li>
97<li class="toctree-l3"><a class="reference internal" href="messages.html"><code class="docutils literal"><span class="pre">messages</span></code> &#8211; Message Utilities</a></li>
98<li class="toctree-l3 current"><a class="current reference internal" href=""><code class="docutils literal"><span class="pre">settings</span></code> &#8211; Settings Utilities</a></li>
99<li class="toctree-l3"><a class="reference internal" href="timeutils.html"><code class="docutils literal"><span class="pre">timeutils</span></code> &#8211; Time Utilites</a></li>
100</ul>
101</li>
102</ul>
103</li>
104<li class="toctree-l1"><a class="reference internal" href="../contributing.html">Contributing to EventMQ</a></li>
105</ul>
106
107
108
109 </div>
110 </div>
111 </nav>
112
113 <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
114
115
116 <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
117 <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
118 <a href="../index.html">EventMQ</a>
119 </nav>
120
121
122
123 <div class="wy-nav-content">
124 <div class="rst-content">
125
126
127
128
129
130
131<div role="navigation" aria-label="breadcrumbs navigation">
132 <ul class="wy-breadcrumbs">
133 <li><a href="../index.html">Docs</a> &raquo;</li>
134
135 <li><a href="../api.html">API Documentation</a> &raquo;</li>
136
137 <li><a href="index.html"><code class="docutils literal"><span class="pre">utils</span></code> &#8211; Utilities</a> &raquo;</li>
138
139 <li><code class="docutils literal"><span class="pre">settings</span></code> &#8211; Settings Utilities</li>
140 <li class="wy-breadcrumbs-aside">
141
142
143 <a href="../_sources/utils/settings.txt" rel="nofollow"> View page source</a>
144
145
146 </li>
147 </ul>
148 <hr/>
149</div>
150 <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
151 <div itemprop="articleBody">
152
153 <span class="target" id="module-eventmq.utils.settings"></span><div class="section" id="settings-settings-utilities">
154<h1><code class="xref py py-mod docutils literal"><span class="pre">settings</span></code> &#8211; Settings Utilities<a class="headerlink" href="#settings-settings-utilities" title="Permalink to this headline">¶</a></h1>
155<dl class="function">
156<dt id="eventmq.utils.settings.import_settings">
157<code class="descclassname">eventmq.utils.settings.</code><code class="descname">import_settings</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.utils.settings.import_settings" title="Permalink to this definition">¶</a></dt>
158<dd><p>Import settings and apply to configuration globals</p>
159</dd></dl>
160
161</div>
162
163
164 </div>
165 </div>
166 <footer>
167
168 <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
169
170 <a href="timeutils.html" class="btn btn-neutral float-right" title="timeutils – Time Utilites" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
171
172
173 <a href="messages.html" class="btn btn-neutral" title="messages – Message Utilities" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
174
175 </div>
176
177
178 <hr/>
179
180 <div role="contentinfo">
181 <p>
182 &copy; Copyright 2015, eventboard.io.
183
184 </p>
185 </div>
186 Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
187
188</footer>
189
190 </div>
191 </div>
192
193 </section>
194
195 </div>
196
197
198
199
200
201 <script type="text/javascript">
202 var DOCUMENTATION_OPTIONS = {
203 URL_ROOT:'../',
204 VERSION:'0',
205 COLLAPSE_INDEX:false,
206 FILE_SUFFIX:'.html',
207 HAS_SOURCE: true
208 };
209 </script>
210 <script type="text/javascript" src="../_static/jquery.js"></script>
211 <script type="text/javascript" src="../_static/underscore.js"></script>
212 <script type="text/javascript" src="../_static/doctools.js"></script>
213
214
215
216
217
218 <script type="text/javascript" src="../_static/js/theme.js"></script>
219
220
221
222
223 <script type="text/javascript">
224 jQuery(function () {
225 SphinxRtdTheme.StickyNav.enable();
226 });
227 </script>
228
229
230</body>
231</html> \ No newline at end of file
diff --git a/utils/timeutils.html b/utils/timeutils.html
index 72b99ed..087322b 100644
--- a/utils/timeutils.html
+++ b/utils/timeutils.html
@@ -150,6 +150,48 @@
150 150
151 <span class="target" id="module-eventmq.utils.timeutils"></span><div class="section" id="timeutils-time-utilites"> 151 <span class="target" id="module-eventmq.utils.timeutils"></span><div class="section" id="timeutils-time-utilites">
152<h1><code class="xref py py-mod docutils literal"><span class="pre">timeutils</span></code> &#8211; Time Utilites<a class="headerlink" href="#timeutils-time-utilites" title="Permalink to this headline">¶</a></h1> 152<h1><code class="xref py py-mod docutils literal"><span class="pre">timeutils</span></code> &#8211; Time Utilites<a class="headerlink" href="#timeutils-time-utilites" title="Permalink to this headline">¶</a></h1>
153<dl class="class">
154<dt id="eventmq.utils.timeutils.IntervalIter">
155<em class="property">class </em><code class="descclassname">eventmq.utils.timeutils.</code><code class="descname">IntervalIter</code><span class="sig-paren">(</span><em>start_value</em>, <em>interval_secs</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.utils.timeutils.IntervalIter" title="Permalink to this definition">¶</a></dt>
156<dd><p>represents an interval (in seconds) and it&#8217;s <cite>next()</cite> execution time</p>
157<dl class="docutils">
158<dt>Usage:</dt>
159<dd><p class="first"># interval of 5min using monotonic clock (assume it starts at 0 for the
160# sake of the example)
161interval = IntervalIter(monotonic, 300)
162# Py2</p>
163<p>interval.next() # 300
164interval.next() # 600</p>
165<p class="last"># Py3
166next(interval) # 300
167next(interval) # 600</p>
168</dd>
169</dl>
170<dl class="method">
171<dt id="eventmq.utils.timeutils.IntervalIter.__init__">
172<code class="descname">__init__</code><span class="sig-paren">(</span><em>start_value</em>, <em>interval_secs</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.utils.timeutils.IntervalIter.__init__" title="Permalink to this definition">¶</a></dt>
173<dd><table class="docutils field-list" frame="void" rules="none">
174<col class="field-name" />
175<col class="field-body" />
176<tbody valign="top">
177<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
178<li><strong>start_value</strong> (<em>numeric</em>) &#8211; via <a class="reference internal" href="#eventmq.utils.timeutils.monotonic" title="eventmq.utils.timeutils.monotonic"><code class="xref py py-func docutils literal"><span class="pre">monotonic()</span></code></a> or <a class="reference internal" href="#eventmq.utils.timeutils.timestamp" title="eventmq.utils.timeutils.timestamp"><code class="xref py py-func docutils literal"><span class="pre">timestamp()</span></code></a></li>
179<li><strong>interval_secs</strong> (<a class="reference external" href="https://docs.python.org/library/functions.html#int" title="(in Python v2.7)"><em>int</em></a>) &#8211; </li>
180</ul>
181</td>
182</tr>
183</tbody>
184</table>
185</dd></dl>
186
187<dl class="attribute">
188<dt id="eventmq.utils.timeutils.IntervalIter.__weakref__">
189<code class="descname">__weakref__</code><a class="headerlink" href="#eventmq.utils.timeutils.IntervalIter.__weakref__" title="Permalink to this definition">¶</a></dt>
190<dd><p>list of weak references to the object (if defined)</p>
191</dd></dl>
192
193</dd></dl>
194
153<dl class="function"> 195<dl class="function">
154<dt id="eventmq.utils.timeutils.monotonic"> 196<dt id="eventmq.utils.timeutils.monotonic">
155<code class="descclassname">eventmq.utils.timeutils.</code><code class="descname">monotonic</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.utils.timeutils.monotonic" title="Permalink to this definition">¶</a></dt> 197<code class="descclassname">eventmq.utils.timeutils.</code><code class="descname">monotonic</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.utils.timeutils.monotonic" title="Permalink to this definition">¶</a></dt>