aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjason2016-03-07 13:57:42 -0700
committerjason2016-03-07 13:57:42 -0700
commit1ff4e8d22149ec149a7b2df55114a794726e4938 (patch)
tree0f8b23e8cd3e4813b0627137e3e5202354349e0a
parent3b4c07b188d1530be556b51eacae99b97ef0e9ff (diff)
downloadeventmq-1ff4e8d22149ec149a7b2df55114a794726e4938.tar.gz
eventmq-1ff4e8d22149ec149a7b2df55114a794726e4938.zip
update
-rw-r--r--_sources/protocol.txt4
-rw-r--r--client/messages.html51
-rw-r--r--exceptions.html5
-rw-r--r--genindex.html94
-rw-r--r--jobmanager.html59
-rw-r--r--objects.invbin1163 -> 1054 bytes
-rw-r--r--poller.html1
-rw-r--r--protocol.html4
-rw-r--r--router.html72
-rw-r--r--searchindex.js2
-rw-r--r--utils/classes.html111
-rw-r--r--utils/timeutils.html42
12 files changed, 85 insertions, 360 deletions
diff --git a/_sources/protocol.txt b/_sources/protocol.txt
index ddbcfcc..35b541f 100644
--- a/_sources/protocol.txt
+++ b/_sources/protocol.txt
@@ -17,9 +17,9 @@ The goals are to:
17 17
18License 18License
19======= 19=======
20This Specification is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. 20This Specification is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 2.1 of the License, or (at your option) any later version.
21 21
22This Specification is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 22This Specification is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
23 23
24Language 24Language
25======== 25========
diff --git a/client/messages.html b/client/messages.html
index 744397a..4b9647f 100644
--- a/client/messages.html
+++ b/client/messages.html
@@ -226,34 +226,6 @@ 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">
257<dt id="eventmq.client.messages.send_request"> 229<dt id="eventmq.client.messages.send_request">
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> 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>
259<dd><p>Send a REQUEST command.</p> 231<dd><p>Send a REQUEST command.</p>
@@ -304,29 +276,6 @@ configured default queue name</li>
304</table> 276</table>
305</dd></dl> 277</dd></dl>
306 278
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
330</div> 279</div>
331 280
332 281
diff --git a/exceptions.html b/exceptions.html
index 1aa304f..a192639 100644
--- a/exceptions.html
+++ b/exceptions.html
@@ -33,7 +33,7 @@
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="jobmanager – Job Manager" href="jobmanager.html"/> 35 <link rel="next" title="jobmanager – Job Manager" href="jobmanager.html"/>
36 <link rel="prev" title="API Documentation" href="api.html"/> 36 <link rel="prev" title="messages – Client Messaging" href="client/messages.html"/>
37 37
38 38
39 <script src="_static/js/modernizr.min.js"></script> 39 <script src="_static/js/modernizr.min.js"></script>
@@ -84,6 +84,7 @@
84 84
85 <ul class="current"> 85 <ul class="current">
86<li class="toctree-l1 current"><a class="reference internal" href="api.html">API Documentation</a><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>
87<li class="toctree-l2 current"><a class="current reference internal" href=""><code class="docutils literal"><span class="pre">exceptions</span></code> &#8211; Exceptions</a></li> 88<li class="toctree-l2 current"><a class="current reference internal" href=""><code class="docutils literal"><span class="pre">exceptions</span></code> &#8211; Exceptions</a></li>
88<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> 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>
89<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> 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>
@@ -181,7 +182,7 @@ sending a message to it)</p>
181 <a href="jobmanager.html" class="btn btn-neutral float-right" title="jobmanager – Job Manager" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a> 182 <a href="jobmanager.html" class="btn btn-neutral float-right" title="jobmanager – Job Manager" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
182 183
183 184
184 <a href="api.html" class="btn btn-neutral" title="API Documentation" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a> 185 <a href="client/messages.html" class="btn btn-neutral" title="messages – Client Messaging" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
185 186
186 </div> 187 </div>
187 188
diff --git a/genindex.html b/genindex.html
index f1aa454..89b10e7 100644
--- a/genindex.html
+++ b/genindex.html
@@ -178,23 +178,15 @@
178 <dt><a href="utils/classes.html#eventmq.utils.classes.HeartbeatMixin.__init__">(eventmq.utils.classes.HeartbeatMixin method)</a> 178 <dt><a href="utils/classes.html#eventmq.utils.classes.HeartbeatMixin.__init__">(eventmq.utils.classes.HeartbeatMixin method)</a>
179 </dt> 179 </dt>
180 180
181
182 <dt><a href="utils/timeutils.html#eventmq.utils.timeutils.IntervalIter.__init__">(eventmq.utils.timeutils.IntervalIter method)</a>
183 </dt>
184
185 </dl></dd> 181 </dl></dd>
186 </dl></td> 182 </dl></td>
187 <td style="width: 33%" valign="top"><dl> 183 <td style="width: 33%" valign="top"><dl>
188 184
189 <dt><a href="utils/classes.html#eventmq.utils.classes.EMQPService.__weakref__">__weakref__ (eventmq.utils.classes.EMQPService attribute)</a> 185 <dt><a href="utils/classes.html#eventmq.utils.classes.HeartbeatMixin.__weakref__">__weakref__ (eventmq.utils.classes.HeartbeatMixin attribute)</a>
190 </dt> 186 </dt>
191 187
192 <dd><dl> 188 <dd><dl>
193 189
194 <dt><a href="utils/classes.html#eventmq.utils.classes.HeartbeatMixin.__weakref__">(eventmq.utils.classes.HeartbeatMixin attribute)</a>
195 </dt>
196
197
198 <dt><a href="utils/classes.html#eventmq.utils.classes.ZMQReceiveMixin.__weakref__">(eventmq.utils.classes.ZMQReceiveMixin attribute)</a> 190 <dt><a href="utils/classes.html#eventmq.utils.classes.ZMQReceiveMixin.__weakref__">(eventmq.utils.classes.ZMQReceiveMixin attribute)</a>
199 </dt> 191 </dt>
200 192
@@ -202,10 +194,6 @@
202 <dt><a href="utils/classes.html#eventmq.utils.classes.ZMQSendMixin.__weakref__">(eventmq.utils.classes.ZMQSendMixin attribute)</a> 194 <dt><a href="utils/classes.html#eventmq.utils.classes.ZMQSendMixin.__weakref__">(eventmq.utils.classes.ZMQSendMixin attribute)</a>
203 </dt> 195 </dt>
204 196
205
206 <dt><a href="utils/timeutils.html#eventmq.utils.timeutils.IntervalIter.__weakref__">(eventmq.utils.timeutils.IntervalIter attribute)</a>
207 </dt>
208
209 </dl></dd> 197 </dl></dd>
210 </dl></td> 198 </dl></td>
211</tr></table> 199</tr></table>
@@ -218,16 +206,12 @@
218 </dt> 206 </dt>
219 207
220 208
221 <dt><a href="router.html#eventmq.router.Router.add_scheduler">add_scheduler() (eventmq.router.Router method)</a> 209 <dt><a href="router.html#eventmq.router.Router.add_worker">add_worker() (eventmq.router.Router method)</a>
222 </dt> 210 </dt>
223 211
224 </dl></td> 212 </dl></td>
225 <td style="width: 33%" valign="top"><dl> 213 <td style="width: 33%" valign="top"><dl>
226 214
227 <dt><a href="router.html#eventmq.router.Router.add_worker">add_worker() (eventmq.router.Router method)</a>
228 </dt>
229
230
231 <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.available_workers">available_workers (eventmq.jobmanager.JobManager attribute)</a> 215 <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.available_workers">available_workers (eventmq.jobmanager.JobManager attribute)</a>
232 </dt> 216 </dt>
233 217
@@ -248,10 +232,6 @@
248<table style="width: 100%" class="indextable genindextable"><tr> 232<table style="width: 100%" class="indextable genindextable"><tr>
249 <td style="width: 33%" valign="top"><dl> 233 <td style="width: 33%" valign="top"><dl>
250 234
251 <dt><a href="router.html#eventmq.router.Router.clean_up_dead_schedulers">clean_up_dead_schedulers() (eventmq.router.Router method)</a>
252 </dt>
253
254
255 <dt><a href="router.html#eventmq.router.Router.clean_up_dead_workers">clean_up_dead_workers() (eventmq.router.Router method)</a> 235 <dt><a href="router.html#eventmq.router.Router.clean_up_dead_workers">clean_up_dead_workers() (eventmq.router.Router method)</a>
256 </dt> 236 </dt>
257 237
@@ -284,10 +264,6 @@
284<table style="width: 100%" class="indextable genindextable"><tr> 264<table style="width: 100%" class="indextable genindextable"><tr>
285 <td style="width: 33%" valign="top"><dl> 265 <td style="width: 33%" valign="top"><dl>
286 266
287 <dt><a href="utils/classes.html#eventmq.utils.classes.EMQPService">EMQPService (class in eventmq.utils.classes)</a>
288 </dt>
289
290
291 <dt><a href="client.html#module-eventmq.client">eventmq.client (module)</a> 267 <dt><a href="client.html#module-eventmq.client">eventmq.client (module)</a>
292 </dt> 268 </dt>
293 269
@@ -311,12 +287,12 @@
311 <dt><a href="receiver.html#module-eventmq.receiver">eventmq.receiver (module)</a> 287 <dt><a href="receiver.html#module-eventmq.receiver">eventmq.receiver (module)</a>
312 </dt> 288 </dt>
313 289
314 </dl></td>
315 <td style="width: 33%" valign="top"><dl>
316 290
317 <dt><a href="router.html#module-eventmq.router">eventmq.router (module)</a> 291 <dt><a href="router.html#module-eventmq.router">eventmq.router (module)</a>
318 </dt> 292 </dt>
319 293
294 </dl></td>
295 <td style="width: 33%" valign="top"><dl>
320 296
321 <dt><a href="sender.html#module-eventmq.sender">eventmq.sender (module)</a> 297 <dt><a href="sender.html#module-eventmq.sender">eventmq.sender (module)</a>
322 </dt> 298 </dt>
@@ -378,7 +354,7 @@
378<table style="width: 100%" class="indextable genindextable"><tr> 354<table style="width: 100%" class="indextable genindextable"><tr>
379 <td style="width: 33%" valign="top"><dl> 355 <td style="width: 33%" valign="top"><dl>
380 356
381 <dt><a href="utils/timeutils.html#eventmq.utils.timeutils.IntervalIter">IntervalIter (class in eventmq.utils.timeutils)</a> 357 <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.incoming">incoming (eventmq.jobmanager.JobManager attribute)</a>
382 </dt> 358 </dt>
383 359
384 360
@@ -391,10 +367,6 @@
391 <dt><a href="utils/classes.html#eventmq.utils.classes.HeartbeatMixin.is_dead">is_dead() (eventmq.utils.classes.HeartbeatMixin method)</a> 367 <dt><a href="utils/classes.html#eventmq.utils.classes.HeartbeatMixin.is_dead">is_dead() (eventmq.utils.classes.HeartbeatMixin method)</a>
392 </dt> 368 </dt>
393 369
394
395 <dt><a href="utils/classes.html#eventmq.utils.classes.EMQPService.is_heartbeat_enabled">is_heartbeat_enabled (eventmq.utils.classes.EMQPService attribute)</a>
396 </dt>
397
398 </dl></td> 370 </dl></td>
399</tr></table> 371</tr></table>
400 372
@@ -474,7 +446,7 @@
474<table style="width: 100%" class="indextable genindextable"><tr> 446<table style="width: 100%" class="indextable genindextable"><tr>
475 <td style="width: 33%" valign="top"><dl> 447 <td style="width: 33%" valign="top"><dl>
476 448
477 <dt><a href="utils/classes.html#eventmq.utils.classes.EMQPService.on_ack">on_ack() (eventmq.utils.classes.EMQPService method)</a> 449 <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.on_ack">on_ack() (eventmq.jobmanager.JobManager method)</a>
478 </dt> 450 </dt>
479 451
480 452
@@ -491,12 +463,12 @@
491 <dt><a href="router.html#eventmq.router.Router.on_inform">on_inform() (eventmq.router.Router method)</a> 463 <dt><a href="router.html#eventmq.router.Router.on_inform">on_inform() (eventmq.router.Router method)</a>
492 </dt> 464 </dt>
493 465
466 </dl></td>
467 <td style="width: 33%" valign="top"><dl>
494 468
495 <dt><a href="router.html#eventmq.router.Router.on_ready">on_ready() (eventmq.router.Router method)</a> 469 <dt><a href="router.html#eventmq.router.Router.on_ready">on_ready() (eventmq.router.Router method)</a>
496 </dt> 470 </dt>
497 471
498 </dl></td>
499 <td style="width: 33%" valign="top"><dl>
500 472
501 <dt><a href="router.html#eventmq.router.Router.on_receive_request">on_receive_request() (eventmq.router.Router method)</a> 473 <dt><a href="router.html#eventmq.router.Router.on_receive_request">on_receive_request() (eventmq.router.Router method)</a>
502 </dt> 474 </dt>
@@ -505,10 +477,6 @@
505 <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.on_request">on_request() (eventmq.jobmanager.JobManager method)</a> 477 <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.on_request">on_request() (eventmq.jobmanager.JobManager method)</a>
506 </dt> 478 </dt>
507 479
508
509 <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.outgoing">outgoing (eventmq.jobmanager.JobManager attribute)</a>
510 </dt>
511
512 </dl></td> 480 </dl></td>
513</tr></table> 481</tr></table>
514 482
@@ -538,7 +506,7 @@
538 </dt> 506 </dt>
539 507
540 508
541 <dt><a href="utils/classes.html#eventmq.utils.classes.EMQPService.process_message">process_message() (eventmq.utils.classes.EMQPService method)</a> 509 <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.process_message">process_message() (eventmq.jobmanager.JobManager method)</a>
542 </dt> 510 </dt>
543 511
544 512
@@ -586,10 +554,6 @@
586 </dt> 554 </dt>
587 555
588 556
589 <dt><a href="router.html#eventmq.router.Router.received_disconnect">received_disconnect (eventmq.router.Router attribute)</a>
590 </dt>
591
592
593 <dt><a href="receiver.html#eventmq.receiver.Receiver">Receiver (class in eventmq.receiver)</a> 557 <dt><a href="receiver.html#eventmq.receiver.Receiver">Receiver (class in eventmq.receiver)</a>
594 </dt> 558 </dt>
595 559
@@ -612,19 +576,13 @@
612 </dt> 576 </dt>
613 577
614 578
615 <dt><a href="utils/classes.html#eventmq.utils.classes.EMQPService.reset">reset() (eventmq.utils.classes.EMQPService method)</a> 579 <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.reset">reset() (eventmq.jobmanager.JobManager method)</a>
616 </dt> 580 </dt>
617 581
618 582
619 <dt><a href="router.html#eventmq.router.Router.reset_heartbeat_counters">reset_heartbeat_counters() (eventmq.router.Router method)</a> 583 <dt><a href="utils/classes.html#eventmq.utils.classes.HeartbeatMixin.reset_heartbeat_counters">reset_heartbeat_counters() (eventmq.utils.classes.HeartbeatMixin method)</a>
620 </dt> 584 </dt>
621 585
622 <dd><dl>
623
624 <dt><a href="utils/classes.html#eventmq.utils.classes.HeartbeatMixin.reset_heartbeat_counters">(eventmq.utils.classes.HeartbeatMixin method)</a>
625 </dt>
626
627 </dl></dd>
628 586
629 <dt><a href="router.html#eventmq.router.Router">Router (class in eventmq.router)</a> 587 <dt><a href="router.html#eventmq.router.Router">Router (class in eventmq.router)</a>
630 </dt> 588 </dt>
@@ -640,18 +598,6 @@
640<table style="width: 100%" class="indextable genindextable"><tr> 598<table style="width: 100%" class="indextable genindextable"><tr>
641 <td style="width: 33%" valign="top"><dl> 599 <td style="width: 33%" valign="top"><dl>
642 600
643 <dt><a href="client/messages.html#eventmq.client.messages.schedule">schedule() (in module eventmq.client.messages)</a>
644 </dt>
645
646
647 <dt><a href="router.html#eventmq.router.Router.scheduler_queue">scheduler_queue (eventmq.router.Router attribute)</a>
648 </dt>
649
650
651 <dt><a href="router.html#eventmq.router.Router.schedulers">schedulers (eventmq.router.Router attribute)</a>
652 </dt>
653
654
655 <dt><a href="utils/timeutils.html#eventmq.utils.timeutils.seconds_until">seconds_until() (in module eventmq.utils.timeutils)</a> 601 <dt><a href="utils/timeutils.html#eventmq.utils.timeutils.seconds_until">seconds_until() (in module eventmq.utils.timeutils)</a>
656 </dt> 602 </dt>
657 603
@@ -681,12 +627,12 @@
681 </dt> 627 </dt>
682 628
683 </dl></dd> 629 </dl></dd>
684 </dl></td>
685 <td style="width: 33%" valign="top"><dl>
686 630
687 <dt><a href="utils/classes.html#eventmq.utils.classes.EMQPService.send_inform">send_inform() (eventmq.utils.classes.EMQPService method)</a> 631 <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.send_inform">send_inform() (eventmq.jobmanager.JobManager method)</a>
688 </dt> 632 </dt>
689 633
634 </dl></td>
635 <td style="width: 33%" valign="top"><dl>
690 636
691 <dt><a href="utils/classes.html#eventmq.utils.classes.ZMQSendMixin.send_multipart">send_multipart() (eventmq.utils.classes.ZMQSendMixin method)</a> 637 <dt><a href="utils/classes.html#eventmq.utils.classes.ZMQSendMixin.send_multipart">send_multipart() (eventmq.utils.classes.ZMQSendMixin method)</a>
692 </dt> 638 </dt>
@@ -700,14 +646,6 @@
700 </dt> 646 </dt>
701 647
702 648
703 <dt><a href="client/messages.html#eventmq.client.messages.send_schedule_request">send_schedule_request() (in module eventmq.client.messages)</a>
704 </dt>
705
706
707 <dt><a href="router.html#eventmq.router.Router.send_schedulers_heartbeats">send_schedulers_heartbeats() (eventmq.router.Router method)</a>
708 </dt>
709
710
711 <dt><a href="router.html#eventmq.router.Router.send_workers_heartbeats">send_workers_heartbeats() (eventmq.router.Router method)</a> 649 <dt><a href="router.html#eventmq.router.Router.send_workers_heartbeats">send_workers_heartbeats() (eventmq.router.Router method)</a>
712 </dt> 650 </dt>
713 651
@@ -716,12 +654,12 @@
716 </dt> 654 </dt>
717 655
718 656
719 <dt><a href="router.html#eventmq.router.Router.start">start() (eventmq.router.Router method)</a> 657 <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.start">start() (eventmq.jobmanager.JobManager method)</a>
720 </dt> 658 </dt>
721 659
722 <dd><dl> 660 <dd><dl>
723 661
724 <dt><a href="utils/classes.html#eventmq.utils.classes.EMQPService.start">(eventmq.utils.classes.EMQPService method)</a> 662 <dt><a href="router.html#eventmq.router.Router.start">(eventmq.router.Router method)</a>
725 </dt> 663 </dt>
726 664
727 </dl></dd> 665 </dl></dd>
diff --git a/jobmanager.html b/jobmanager.html
index 1553d9e..2c81041 100644
--- a/jobmanager.html
+++ b/jobmanager.html
@@ -183,6 +183,14 @@ this point the manager should wait for a slot to free up.</p>
183number changes as workers become busy with jobs</p> 183number changes as workers become busy with jobs</p>
184</dd></dl> 184</dd></dl>
185 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
186<dl class="method"> 194<dl class="method">
187<dt id="eventmq.jobmanager.JobManager.jobmanager_main"> 195<dt id="eventmq.jobmanager.JobManager.jobmanager_main">
188<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> 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>
@@ -197,6 +205,12 @@ referring to the logs.</p>
197</dd></dl> 205</dd></dl>
198 206
199<dl class="method"> 207<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">
200<dt id="eventmq.jobmanager.JobManager.on_heartbeat"> 214<dt id="eventmq.jobmanager.JobManager.on_heartbeat">
201<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> 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>
202<dd><p>a placeholder for a noop command. The actual &#8216;logic&#8217; for HEARTBEAT is 216<dd><p>a placeholder for a noop command. The actual &#8216;logic&#8217; for HEARTBEAT is
@@ -236,12 +250,31 @@ HEARTBEAT</p>
236</dl> 250</dl>
237</dd></dl> 251</dd></dl>
238 252
239<dl class="attribute"> 253<dl class="method">
240<dt id="eventmq.jobmanager.JobManager.outgoing"> 254<dt id="eventmq.jobmanager.JobManager.process_message">
241<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> 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>
242<dd><p>JobManager starts out by INFORMing the router of it&#8217;s existance, 256<dd><p>Processes a message</p>
243then telling the router that it is READY. The reply will be the unit 257<table class="docutils field-list" frame="void" rules="none">
244of work.</p> 258<col class="field-name" />
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>
273
274<dl class="method">
275<dt id="eventmq.jobmanager.JobManager.send_inform">
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>
277<dd><p>Send an INFORM command</p>
245</dd></dl> 278</dd></dl>
246 279
247<dl class="method"> 280<dl class="method">
@@ -251,6 +284,20 @@ of work.</p>
251for another REQUEST message.</p> 284for another REQUEST message.</p>
252</dd></dl> 285</dd></dl>
253 286
287<dl class="method">
288<dt id="eventmq.jobmanager.JobManager.start">
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>
290<dd><p>Connect to <cite>addr</cite> and begin listening for job requests</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>
300
254</dd></dl> 301</dd></dl>
255 302
256</div> 303</div>
diff --git a/objects.inv b/objects.inv
index 5b59fb8..855bf43 100644
--- a/objects.inv
+++ b/objects.inv
Binary files differ
diff --git a/poller.html b/poller.html
index 9384cd6..8964feb 100644
--- a/poller.html
+++ b/poller.html
@@ -84,6 +84,7 @@
84 84
85 <ul class="current"> 85 <ul class="current">
86<li class="toctree-l1 current"><a class="reference internal" href="api.html">API Documentation</a><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>
87<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> 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>
88<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> 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>
89<li class="toctree-l2 current"><a class="current reference internal" href=""><code class="docutils literal"><span class="pre">poller</span></code> &#8211; Poller</a></li> 90<li class="toctree-l2 current"><a class="current reference internal" href=""><code class="docutils literal"><span class="pre">poller</span></code> &#8211; Poller</a></li>
diff --git a/protocol.html b/protocol.html
index 221bae0..d1d24f4 100644
--- a/protocol.html
+++ b/protocol.html
@@ -167,8 +167,8 @@ EventMQ Protocol Specification
167</div> 167</div>
168<div class="section" id="license"> 168<div class="section" id="license">
169<h1>License<a class="headerlink" href="#license" title="Permalink to this headline">¶</a></h1> 169<h1>License<a class="headerlink" href="#license" title="Permalink to this headline">¶</a></h1>
170<p>This Specification is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.</p> 170<p>This Specification is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 2.1 of the License, or (at your option) any later version.</p>
171<p>This Specification is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.</p> 171<p>This Specification is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.</p>
172</div> 172</div>
173<div class="section" id="language"> 173<div class="section" id="language">
174<h1>Language<a class="headerlink" href="#language" title="Permalink to this headline">¶</a></h1> 174<h1>Language<a class="headerlink" href="#language" title="Permalink to this headline">¶</a></h1>
diff --git a/router.html b/router.html
index 0604f89..5166889 100644
--- a/router.html
+++ b/router.html
@@ -149,20 +149,6 @@
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">
166<dt id="eventmq.router.Router.add_worker"> 152<dt id="eventmq.router.Router.add_worker">
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> 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>
168<dd><p>Adds a worker to worker queues</p> 154<dd><p>Adds a worker to worker queues</p>
@@ -171,7 +157,7 @@
171<col class="field-body" /> 157<col class="field-body" />
172<tbody valign="top"> 158<tbody valign="top">
173<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> 159<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
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> 160<li><strong>worker_id</strong> &#8211; unique id of the worker to add</li>
175<li><strong>queues</strong> &#8211; queue or queues this worker should be a member of</li> 161<li><strong>queues</strong> &#8211; queue or queues this worker should be a member of</li>
176</ul> 162</ul>
177</td> 163</td>
@@ -181,13 +167,6 @@
181</dd></dl> 167</dd></dl>
182 168
183<dl class="method"> 169<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">
191<dt id="eventmq.router.Router.clean_up_dead_workers"> 170<dt id="eventmq.router.Router.clean_up_dead_workers">
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> 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>
193<dd><p>Loops through the worker queues and removes any workers who haven&#8217;t 172<dd><p>Loops through the worker queues and removes any workers who haven&#8217;t
@@ -231,7 +210,10 @@ and announces itself.</p>
231<dl class="method"> 210<dl class="method">
232<dt id="eventmq.router.Router.on_receive_request"> 211<dt id="eventmq.router.Router.on_receive_request">
233<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> 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>
234<dd><table class="docutils field-list" frame="void" rules="none"> 213<dd><p>This function is called when a message comes in from the client socket.
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">
235<col class="field-name" /> 217<col class="field-name" />
236<col class="field-body" /> 218<col class="field-body" />
237<tbody valign="top"> 219<tbody valign="top">
@@ -274,12 +256,6 @@ worker slot, so you may see duplicate addresses.</p>
274<p>{&#8216;default&#8217;: [&#8216;w1&#8217;, &#8216;w2&#8217;, &#8216;w1&#8217;, &#8216;w4&#8217;]}</p> 256<p>{&#8216;default&#8217;: [&#8216;w1&#8217;, &#8216;w2&#8217;, &#8216;w1&#8217;, &#8216;w4&#8217;]}</p>
275</dd></dl> 257</dd></dl>
276 258
277<dl class="attribute">
278<dt id="eventmq.router.Router.received_disconnect">
279<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>
280<dd><p>Set to True when the router should die.</p>
281</dd></dl>
282
283<dl class="method"> 259<dl class="method">
284<dt id="eventmq.router.Router.requeue_worker"> 260<dt id="eventmq.router.Router.requeue_worker">
285<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> 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>
@@ -291,39 +267,11 @@ worker slot, so you may see duplicate addresses.</p>
291</dd></dl> 267</dd></dl>
292 268
293<dl class="method"> 269<dl class="method">
294<dt id="eventmq.router.Router.reset_heartbeat_counters">
295<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>
296<dd><p>Reset all the counters for heartbeats back to 0</p>
297</dd></dl>
298
299<dl class="method">
300<dt id="eventmq.router.Router.router_main"> 270<dt id="eventmq.router.Router.router_main">
301<code class="descname">router_main</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.router_main" title="Permalink to this definition">¶</a></dt> 271<code class="descname">router_main</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.router_main" title="Permalink to this definition">¶</a></dt>
302<dd><p>Kick off router with logging and settings import</p> 272<dd><p>Kick off router with logging and settings import</p>
303</dd></dl> 273</dd></dl>
304 274
305<dl class="attribute">
306<dt id="eventmq.router.Router.scheduler_queue">
307<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>
308<dd><p><em>Queue for schedulers to use</em></p>
309</dd></dl>
310
311<dl class="attribute">
312<dt id="eventmq.router.Router.schedulers">
313<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>
314<dd><p>Scheduler clients. Clients are able to send SCHEDULE commands that
315need to be routed to a scheduler, which will keep track of time and
316run the job.
317Contains dictionaries:</p>
318<blockquote>
319<div><dl class="docutils">
320<dt>self.schedulers[&lt;scheduler_zmq_id&gt;] = {</dt>
321<dd>&#8216;hb&#8217;: &lt;last_recv_heartbeat&gt;,</dd>
322</dl>
323<p>}</p>
324</div></blockquote>
325</dd></dl>
326
327<dl class="method"> 275<dl class="method">
328<dt id="eventmq.router.Router.send_ack"> 276<dt id="eventmq.router.Router.send_ack">
329<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> 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>
@@ -363,20 +311,14 @@ needed when building messages</p>
363</dd></dl> 311</dd></dl>
364 312
365<dl class="method"> 313<dl class="method">
366<dt id="eventmq.router.Router.send_schedulers_heartbeats">
367<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>
368<dd><p>Send HEARTBEATs to all registered schedulers</p>
369</dd></dl>
370
371<dl class="method">
372<dt id="eventmq.router.Router.send_workers_heartbeats"> 314<dt id="eventmq.router.Router.send_workers_heartbeats">
373<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> 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>
374<dd><p>Send HEARTBEATs to all registered workers.</p> 316<dd><p>Send heartbeats to all registered workers.</p>
375</dd></dl> 317</dd></dl>
376 318
377<dl class="method"> 319<dl class="method">
378<dt id="eventmq.router.Router.start"> 320<dt id="eventmq.router.Router.start">
379<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> 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>
380<dd><p>Begin listening for connections on the provided connection strings</p> 322<dd><p>Begin listening for connections on the provided connection strings</p>
381<table class="docutils field-list" frame="void" rules="none"> 323<table class="docutils field-list" frame="void" rules="none">
382<col class="field-name" /> 324<col class="field-name" />
diff --git a/searchindex.js b/searchindex.js
index 7e31518..935688d 100644
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
Search.setIndex({envversion:46,filenames:["api","client","client/messages","contributing","exceptions","getting_started","glossary","index","jobmanager","poller","protocol","receiver","router","sender","style","utils","utils/classes","utils/messages","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,""],PeerGoneAwayError:[4,5,1,""]},"eventmq.jobmanager":{JobManager:[8,3,1,""]},"eventmq.jobmanager.JobManager":{"__init__":[8,2,1,""],active_jobs:[8,1,1,""],available_workers:[8,1,1,""],jobmanager_main:[8,2,1,""],name:[8,1,1,""],on_heartbeat:[8,2,1,""],on_request:[8,2,1,""],outgoing:[8,1,1,""],send_ready:[8,2,1,""]},"eventmq.poller":{Poller:[9,3,1,""]},"eventmq.poller.Poller":{"__init__":[9,2,1,""],poll:[9,2,1,""],register:[9,2,1,""],unregister:[9,2,1,""]},"eventmq.receiver":{Receiver:[11,3,1,""]},"eventmq.receiver.Receiver":{"__init__":[11,2,1,""],connect:[11,2,1,""],listen:[11,2,1,""],name:[11,1,1,""],ready:[11,1,1,""],unbind:[11,2,1,""],zcontext:[11,1,1,""],zsocket:[11,1,1,""]},"eventmq.router":{Router:[12,3,1,""]},"eventmq.router.Router":{add_scheduler:[12,2,1,""],add_worker:[12,2,1,""],clean_up_dead_schedulers:[12,2,1,""],clean_up_dead_workers:[12,2,1,""],on_heartbeat:[12,2,1,""],on_inform:[12,2,1,""],on_ready:[12,2,1,""],on_receive_request:[12,2,1,""],process_worker_message:[12,2,1,""],queue_message:[12,2,1,""],queues:[12,1,1,""],received_disconnect:[12,1,1,""],requeue_worker:[12,2,1,""],reset_heartbeat_counters:[12,2,1,""],router_main:[12,2,1,""],scheduler_queue:[12,1,1,""],schedulers:[12,1,1,""],send_ack:[12,2,1,""],send_heartbeat:[12,2,1,""],send_schedulers_heartbeats:[12,2,1,""],send_workers_heartbeats:[12,2,1,""],start:[12,2,1,""],waiting_messages:[12,1,1,""],workers:[12,1,1,""]},"eventmq.sender":{Sender:[13,3,1,""]},"eventmq.sender.Sender":{"__init__":[13,2,1,""],connect:[13,2,1,""],listen:[13,2,1,""],name:[13,1,1,""],ready:[13,1,1,""],rebuild:[13,2,1,""],unbind:[13,2,1,""],zcontext:[13,1,1,""],zsocket:[13,1,1,""]},"eventmq.utils":{classes:[16,0,0,"-"],messages:[17,0,0,"-"],random_characters:[15,4,1,""],timeutils:[18,0,0,"-"]},"eventmq.utils.classes":{EMQPService:[16,3,1,""],HeartbeatMixin:[16,3,1,""],ZMQReceiveMixin:[16,3,1,""],ZMQSendMixin:[16,3,1,""]},"eventmq.utils.classes.EMQPService":{"__weakref__":[16,1,1,""],is_heartbeat_enabled:[16,1,1,""],on_ack:[16,2,1,""],process_message:[16,2,1,""],reset:[16,2,1,""],send_inform:[16,2,1,""],start:[16,2,1,""]},"eventmq.utils.classes.HeartbeatMixin":{"__init__":[16,2,1,""],"__weakref__":[16,1,1,""],is_dead:[16,2,1,""],reset_heartbeat_counters:[16,2,1,""],send_heartbeat:[16,2,1,""]},"eventmq.utils.classes.ZMQReceiveMixin":{"__weakref__":[16,1,1,""],recv:[16,2,1,""],recv_multipart:[16,2,1,""]},"eventmq.utils.classes.ZMQSendMixin":{"__weakref__":[16,1,1,""],send:[16,2,1,""],send_multipart:[16,2,1,""]},"eventmq.utils.messages":{fwd_emqp_router_message:[17,4,1,""],generate_msgid:[17,4,1,""],parse_message:[17,4,1,""],parse_router_message:[17,4,1,""],send_emqp_message:[17,4,1,""],send_emqp_router_message:[17,4,1,""]},"eventmq.utils.timeutils":{IntervalIter:[18,3,1,""],monotonic:[18,4,1,""],seconds_until:[18,4,1,""],timestamp:[18,4,1,""]},"eventmq.utils.timeutils.IntervalIter":{"__init__":[18,2,1,""],"__weakref__":[18,1,1,""]},eventmq:{client:[1,0,0,"-"],exceptions:[4,0,0,"-"],jobmanager:[8,0,0,"-"],poller:[9,0,0,"-"],receiver:[11,0,0,"-"],router:[12,0,0,"-"],sender:[13,0,0,"-"],utils:[15,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"]},objtypes:{"0":"py:module","1":"py:attribute","2":"py:method","3":"py:class","4":"py:function","5":"py:exception"},terms:{"0mq":[10,16],"5min":18,"__init__":[8,9,11,13,16,18],"__weakref__":[16,18],"_empty_":10,"_headers_":10,"_issu":[],"_msg_":10,"_msgid_":10,"_queue_name_":10,"_recipient_id":16,"_sourc":[],"_topic_name_":10,"_unix_ts_":10,"abstract":10,"case":[10,18],"class":[],"default":[2,8,10,11,12,13,16],"float":[16,18],"function":2,"import":[2,3,8,12],"int":[2,9,18],"long":[9,16],"new":12,"public":10,"return":[2,3,9,11,13,15,16,17,18],"true":[2,10,11,12,13,16],"while":10,abl:12,about:[8,10,12],absolut:3,accept:[10,16],account:[12,17],ack:[10,12],ackd_msgid:16,acknowledg:[10,12],act:[1,10],activ:8,active_job:8,actual:[8,12],add:12,add_schedul:12,add_work:12,addr:[11,13,16],address:[],after:10,agre:10,all:[2,4,8,10,11,12,13,16],allow:10,alon:2,alpha:10,alreadi:12,also:16,alwai:[2,8],and_data:17,ani:[2,10,12],announc:12,anoth:[8,12],anyth:6,api:[],appear:9,appened:12,applic:[2,10],architectur:[],aren:[],arg2:2,arg3:2,arg:[2,8,9,11,12,13,16],argument:16,arithmet:18,around:[],assum:18,attempt:4,attr:9,automat:16,avail:[8,12],available_work:8,awaiting_ack:16,back:[10,12,16],backend_addr:12,base:[4,9],basi:10,becaus:12,becom:8,been:[2,16],befor:[2,9,10],begin:[12,16],belong:[10,12],below:10,best:2,between:[2,10],bin:5,block:2,bool:[2,11,13,16],boot:18,both:[9,10],box:2,broadcast:10,broker:[6,10,16],buffer:12,build:[2,12,13],build_module_path:2,built:10,bulid:11,busi:8,calcul:18,call:[9,12,16],callabl:[2,8,11],can:[1,2,10,12,16,17],certain:16,chang:[8,10],charact:15,check:[2,11,13,16],class_arg:[2,8],class_kwarg:[2,8],clean_up_dead_schedul:12,clean_up_dead_work:12,client:[],clock:18,close:[16,18],code:[3,7,16],colon:2,column:14,com:[],come:[2,12],comma:10,command:[2,5,8,10,12,16,17],complet:10,compon:10,configur:2,connction:[11,13],connect:[10,11,12,13,16,17],consist:10,contact:4,contain:[1,10,12,15],content:[],context:[11,13],convers:10,convienc:[9,16],correctli:12,count:[8,10,12,18],counter:[12,16],cpu:2,creat:[12,13,15],cross:14,csv:10,current:[11,13,16],custom:12,data:[12,17],deal:15,dealer:13,death:16,debug:10,decor:2,decrypt:2,def:[],defeat:10,defer:2,defer_job:2,defin:[2,8,10,11,13,16,18],deliv:10,denot:2,describ:10,descript:10,detail:[2,10],detect:10,determin:10,devic:[6,9,16,17],dialog:10,dict:[2,8,9],dictionari:[9,10,12],did:2,die:12,differ:3,directli:[9,16],disabl:2,disconnect:[10,11],distribut:10,doe:16,doesn:9,dot:2,down:18,dst:18,duplic:12,dure:13,effort:2,either:[10,16],els:[3,10],empti:10,emqp:[],emqpservic:16,enabl:[2,16],encount:[2,4],end:[2,16],enderlab:[],ensur:[2,8,10],entri:12,error:2,even:10,event:[9,16],eventloop:8,eventmqerror:4,everi:8,exampl:[12,16,18],except:[],execut:[2,8,10,18],exist:[4,8],explicitli:16,expos:8,extra:10,fail:[2,10],failur:2,fair:10,fals:[2,10,11,13,16],few:3,field:10,file:14,find:16,finish:[10,12],first:[10,16],fit:10,flag:[2,9],follow:[2,5,10,16],form:16,format:[2,8,10,17],forward:17,found:12,foundat:10,frame:[],free:[8,10],from:[4,9,10,11,12,13,16,18],frontend_addr:12,func:[2,8],fwd_emqp_router_messag:17,gener:[8,9,10,11,13,17],generate_msgid:17,github:[],give:2,given:12,gmtime:[],gnu:10,goal:[],good:16,guarante:[2,10],guarente:2,hand:15,handl:[8,10,12],happen:[2,9,12,13],hasn:12,have:[2,8,16,17],haven:12,header:[],heartbeat:[],heartbeat_timeout:12,heartbeati:16,heartbeatmixin:16,heavi:10,help:6,helper:16,here:[10,12],home:5,hope:10,how:[2,9],html:10,http:10,ident:10,identifi:12,ietf:10,ignor:[10,16],immediatli:2,implement:[10,16],impli:10,includ:[2,10],incom:[],index:7,inform:[8,10,12,16],inform_typ:[],inherit:4,initi:2,insert:[10,16],instal:[3,5],instanc:8,instanti:[2,8],interpret:10,interv:[2,10,18],interval_min:[],interval_sec:[2,18],intervalit:18,intes:2,invalidmessageerror:4,is_dead:16,is_heartbeat_en:16,isn:[12,16],issu:[3,7,10],item:12,iter:9,itself:12,job:[],jobmanag:[],jobmanager_main:8,keep:12,kei:[9,10,12],kick:[8,12],know:[2,8,12],kwarg2:2,kwarg:[2,8,9,11,12,13,16],languag:[],last:[2,12],last_recv_heartbeat:12,later:[10,12],least:10,leav:10,length:15,let:10,lib:5,licens:[],like:[8,15,16],list:[2,8,10,12,16,18],listen:[11,12,13,16],locat:2,log:[2,8,12],logic:[8,12],longer:4,look:16,loop:[9,12,16],lower:12,mai:[2,10,12,16],main:8,make:15,malform:4,manag:[],mani:[2,10,13],manual:10,master:10,match:16,member:12,memebership:12,merchant:10,mess:18,messag:[],message_bodi:17,message_id:17,messageerror:4,met:16,meta:[12,17],method:[2,8,9,12,16],minut:2,mode:[],modifi:10,modul:[1,2,7,8,15],monoton:[12,16,18],more:[5,10,15,16],most:8,msg:[8,10,12,16,17],msg_id:[],msgid:[8,12,16],multipart:[10,16],must:[10,16],name:[2,8,10,11,12,13],need:[12,13],never:18,next:[9,18],none:[2,8,11,12,13,16,17],noop:8,note:[8,11,13],now:16,number:[8,18],numer:18,object:[9,16,18],occur:16,off:[8,12],on_ack:16,on_command:[12,16],on_emqp_command:16,on_heartbeat:[8,12],on_inform:12,on_readi:12,on_receive_repli:[],on_receive_request:12,on_recv:11,on_request:8,on_schedul:16,onc:[5,10],onli:[],onlin:12,option:[2,8,10,11,13,17],org:10,orient:10,origin:10,other:[2,10],otherwis:[2,8,11,13,16],out:[8,16],outgo:[8,16],overwhelm:2,own:16,packag:5,page:7,param:2,paramet:[2,8,9,11,12,13,16,17,18],pars:[16,17],parse_messag:17,parse_router_messag:17,part:[10,17],particular:[10,13],pass:[2,10,11],path:[2,5,8],payload:17,peer:[4,10,16],peergoneawayerror:4,per:12,pictur:10,pip:5,placehold:[8,12],point:8,poll:9,poller:[],pollin:9,pollout:9,pool:[10,12],pop:12,portion:8,possibl:3,practic:16,prefix:17,prepend:10,pretti:10,problem:4,process:[10,12,13,16],process_messag:[8,16],process_worker_messag:12,prop:[],properti:[11,13,16],protocol:[],protocol_vers:16,provid:[12,16],pub:10,publish:10,purpos:10,py2:18,py3:18,python2:5,queu:2,queue:[2,10,12,16],queue_messag:12,quick:2,rais:[2,4,11,13,16,17],random:[15,17],random_charact:15,raw:16,raw_messag:[],readi:[8,10,11,12,13],rebuild:13,receiv:[],received_disconnect:12,recent:[10,12],reciev:[],recip:[],recipi:[12,16,17],recipient_id:17,recommend:10,reconnect:13,recv:16,recv_multipart:16,redistribut:10,refer:[8,16,18],regist:[9,12],regular:10,rel:3,reliabl:10,remain:9,remot:16,remov:[10,12],reopen:16,rep:11,repli:[2,8,10,17],reply_request:2,repres:18,req:13,request:[],requeue_work:12,requir:[5,10],requri:[],reset:[12,16],reset_heartbeat_count:[12,16],resourc:[8,10],respond:[10,12,16],respons:[2,8,11,12,13],restart:[10,13],retri:[2,10],retry_count:2,rfc2119:10,rfc:10,robin:10,roughli:13,round:10,rout:[10,12],router:[],router_main:12,run:[2,5,8,10,12,16],sake:18,same:13,schedul:[],scheduler_id:12,scheduler_queu:12,scheduler_zmq_id:12,search:7,second:18,seconds_until:18,see:[9,10,12,16],self:[8,12,13,16],send:[2,4,8,10,12,13,16,17],send_ack:12,send_emqp_messag:17,send_emqp_router_messag:17,send_heartbeat:[12,16],send_inform:16,send_messag:[],send_multipart:16,send_raw:[],send_readi:8,send_request:2,send_schedule_request:2,send_schedulers_heartbeat:12,send_workers_heartbeat:12,sender:[],sender_id:17,sent:[10,12,16],seper:[2,10],serv:10,server:[8,10],servic:[10,16],service_typ:16,set:[2,8,9,10,12,13,16],shall:10,shalt:14,should:[2,4,8,9,10,11,12,13,16],shown:10,simpl:[5,12,15],sinc:18,singl:10,site:5,skip:[13,16],skip_zmqstream:13,slot:[8,12],socket:[2,9,10,11,12,13,16,17],softwar:10,some:[2,8,15,16,17],someon:10,someth:[2,13,16,18],somewher:3,sourc:[3,7],spawn:8,specif:[],specifi:[10,15,16],start:[],start_valu:18,state:16,statu:10,stop:10,store:[8,12],str:[2,8,11,12,13,15,16,17],string:[2,10,11,12,13,16,17],structur:4,sub:10,subclass:4,subcmd:8,subcommand:[2,8],subject:10,subset:10,subtract:18,success:10,successfulli:2,system:[3,5],take:[12,13,16,17],task:[2,8],tcp:12,tell:8,term:10,than:5,thei:[2,16],them:11,thi:[1,2,4,5,8,9,10,11,12,13,15,16,18],thing:[2,8,13,15,16,17],thou:14,threshold:16,through:[10,12],thy:14,time:[],timeout:9,timestamp:[10,12,18],timeutil:[],timezon:[],tip:3,tool:10,topic:[],topolog:[],tornado:8,trace:10,track:[12,16],tri:2,tupl:[9,16,17],type:[2,10,11,13,15,16],type_:16,typecast:9,typeerror:11,unbind:[11,13],undefin:9,under:10,uniqu:[8,10,12],unit:8,univers:[],unix:10,unless:[8,11,13],unregist:9,unschedul:[2,10],until:18,untouch:[12,17],unus:[],updat:16,upon:10,upstream:8,usag:18,usual:16,utilit:[],utlitii:16,uuid:[8,11,13],vagrant:5,valid:10,valu:[2,9,10,16,17,18],valueerror:16,variabl:16,version:[3,10,16],via:[2,18],virtualenv:5,wait:[2,8,9],waiting_messag:12,walk:8,want:16,warn:12,warranti:10,weak:[16,18],web:10,well:10,went:2,when:[1,2,3,4,8,10,11,12,13,16],where:[2,10,12,16,18],which:[10,12,16],who:[1,12],wish:[2,17],without:[10,13],word:10,work:[3,8,16],worker:[],worker_id:12,worri:10,would:[2,16,18],wrap:[],wrong:2,you:[2,3,10,12,13,16,17],your:[2,10,16],zcontext:[11,13],zeromq:10,zmq:[9,10,11,12,13,16,17],zmqreceivemixin:16,zmqsendmixin:16,zmqstream:13,zsocket:[11,13]},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","Getting Started","Glossary","EventMQ Documentation","<code class=\"docutils literal\"><span class=\"pre\">jobmanager</span></code> &#8211; Job Manager","<code class=\"docutils literal\"><span class=\"pre\">poller</span></code> &#8211; Poller","Goals","<code class=\"docutils literal\"><span class=\"pre\">receiver</span></code> &#8211; Receiver","<code class=\"docutils literal\"><span class=\"pre\">router</span></code> &#8211; Router","<code class=\"docutils literal\"><span class=\"pre\">sender</span></code> &#8211; Sender","Style Guide","<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":16,address:10,api:0,architectur:10,client:[1,2,10],contribut:3,document:[0,7],emqp:10,eventmq:[3,7],except:4,frame:10,get:5,global:10,glossari:6,goal:10,guid:14,header:10,heartbeat:10,indic:7,job:8,jobmanag:8,languag:10,licens:10,manag:8,messag:[2,17],poller:9,protocol:[],receiv:11,request:10,router:[10,12],schedul:10,sender:13,specif:[],start:5,style:14,tabl:7,time:18,timeutil:18,topolog:10,util:[1,15,16,17],utilit:18,welcom:[],worker:10}}) \ No newline at end of file Search.setIndex({envversion:46,filenames:["api","client","client/messages","contributing","exceptions","index","jobmanager","poller","protocol","receiver","router","sender","utils","utils/classes","utils/messages","utils/timeutils"],objects:{"eventmq.client":{messages:[2,0,0,"-"]},"eventmq.client.messages":{build_module_path:[2,2,1,""],defer_job:[2,2,1,""],job:[2,2,1,""],send_request:[2,2,1,""]},"eventmq.exceptions":{EventMQError:[4,5,1,""],InvalidMessageError:[4,5,1,""],MessageError:[4,5,1,""],PeerGoneAwayError:[4,5,1,""]},"eventmq.jobmanager":{JobManager:[6,4,1,""]},"eventmq.jobmanager.JobManager":{"__init__":[6,3,1,""],active_jobs:[6,1,1,""],available_workers:[6,1,1,""],incoming:[6,1,1,""],jobmanager_main:[6,3,1,""],name:[6,1,1,""],on_ack:[6,3,1,""],on_heartbeat:[6,3,1,""],on_request:[6,3,1,""],process_message:[6,3,1,""],reset:[6,3,1,""],send_inform:[6,3,1,""],send_ready:[6,3,1,""],start:[6,3,1,""]},"eventmq.poller":{Poller:[7,4,1,""]},"eventmq.poller.Poller":{"__init__":[7,3,1,""],poll:[7,3,1,""],register:[7,3,1,""],unregister:[7,3,1,""]},"eventmq.receiver":{Receiver:[9,4,1,""]},"eventmq.receiver.Receiver":{"__init__":[9,3,1,""],connect:[9,3,1,""],listen:[9,3,1,""],name:[9,1,1,""],ready:[9,1,1,""],unbind:[9,3,1,""],zcontext:[9,1,1,""],zsocket:[9,1,1,""]},"eventmq.router":{Router:[10,4,1,""]},"eventmq.router.Router":{add_worker:[10,3,1,""],clean_up_dead_workers:[10,3,1,""],on_heartbeat:[10,3,1,""],on_inform:[10,3,1,""],on_ready:[10,3,1,""],on_receive_request:[10,3,1,""],process_worker_message:[10,3,1,""],queue_message:[10,3,1,""],queues:[10,1,1,""],requeue_worker:[10,3,1,""],router_main:[10,3,1,""],send_ack:[10,3,1,""],send_heartbeat:[10,3,1,""],send_workers_heartbeats:[10,3,1,""],start:[10,3,1,""],waiting_messages:[10,1,1,""],workers:[10,1,1,""]},"eventmq.sender":{Sender:[11,4,1,""]},"eventmq.sender.Sender":{"__init__":[11,3,1,""],connect:[11,3,1,""],listen:[11,3,1,""],name:[11,1,1,""],ready:[11,1,1,""],rebuild:[11,3,1,""],unbind:[11,3,1,""],zcontext:[11,1,1,""],zsocket:[11,1,1,""]},"eventmq.utils":{classes:[13,0,0,"-"],messages:[14,0,0,"-"],random_characters:[12,2,1,""],timeutils:[15,0,0,"-"]},"eventmq.utils.classes":{HeartbeatMixin:[13,4,1,""],ZMQReceiveMixin:[13,4,1,""],ZMQSendMixin:[13,4,1,""]},"eventmq.utils.classes.HeartbeatMixin":{"__init__":[13,3,1,""],"__weakref__":[13,1,1,""],is_dead:[13,3,1,""],reset_heartbeat_counters:[13,3,1,""],send_heartbeat:[13,3,1,""]},"eventmq.utils.classes.ZMQReceiveMixin":{"__weakref__":[13,1,1,""],recv:[13,3,1,""],recv_multipart:[13,3,1,""]},"eventmq.utils.classes.ZMQSendMixin":{"__weakref__":[13,1,1,""],send:[13,3,1,""],send_multipart:[13,3,1,""]},"eventmq.utils.messages":{fwd_emqp_router_message:[14,2,1,""],generate_msgid:[14,2,1,""],parse_message:[14,2,1,""],parse_router_message:[14,2,1,""],send_emqp_message:[14,2,1,""],send_emqp_router_message:[14,2,1,""]},"eventmq.utils.timeutils":{monotonic:[15,2,1,""],seconds_until:[15,2,1,""],timestamp:[15,2,1,""]},eventmq:{client:[1,0,0,"-"],exceptions:[4,0,0,"-"],jobmanager:[6,0,0,"-"],poller:[7,0,0,"-"],receiver:[9,0,0,"-"],router:[10,0,0,"-"],sender:[11,0,0,"-"],utils:[12,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","attribute","Python attribute"],"2":["py","function","Python function"],"3":["py","method","Python method"],"4":["py","class","Python class"],"5":["py","exception","Python exception"]},objtypes:{"0":"py:module","1":"py:attribute","2":"py:function","3":"py:method","4":"py:class","5":"py:exception"},terms:{"0mq":[8,13],"5min":[],"__init__":[6,7,9,11,13],"__weakref__":13,"_empty_":8,"_headers_":8,"_issu":[],"_msg_":8,"_msgid_":8,"_queue_name_":8,"_recipient_id":13,"_sourc":[],"_topic_name_":8,"_unix_ts_":8,"abstract":8,"case":[8,15],"class":[],"default":[2,6,8,9,10,11],"float":[13,15],"function":[2,10],"import":[2,3,6,10],"int":[2,7],"long":7,"new":10,"public":8,"return":[2,3,7,9,11,12,13,14,15],"true":[2,8,9,11,13],"while":8,abl:[],about:[6,8,10],absolut:3,accept:8,account:[10,14],ack:[8,10],ackd_msgid:6,acknowledg:[8,10],act:[1,8],activ:6,active_job:6,actual:[6,10],add:10,add_schedul:[],add_work:10,addr:[6,9,11],address:[],after:8,agre:8,all:[2,4,6,8,9,10,11,13],allow:8,alon:2,alpha:8,alreadi:10,also:[],alwai:[2,6],and_data:14,ani:[2,8,10],announc:10,anoth:[6,10],anyth:[],api:[],appear:7,appened:10,applic:[2,8],architectur:[],aren:[],arg2:2,arg3:2,arg:[2,6,7,9,10,11,13],argument:[],arithmet:15,around:[],assum:[],attempt:4,attr:7,automat:13,avail:[6,10],available_work:6,awaiting_ack:6,back:[8,10,13],backend_addr:10,base:[4,7],basi:8,becaus:10,becom:6,been:[2,13],befor:[2,7,8],begin:[6,10],belong:[8,10],below:8,best:2,between:8,bin:[],block:2,bool:[2,9,11,13],boot:15,both:[7,8],box:2,broadcast:8,broker:8,buffer:10,build:[2,10,11],build_module_path:2,built:8,bulid:9,busi:6,calcul:15,call:[6,7,10],callabl:[2,6,9],can:[1,2,8,10,14],certain:[],chang:[6,8],charact:12,check:[2,9,11,13],class_arg:[2,6],class_kwarg:[2,6],clean_up_dead_schedul:[],clean_up_dead_work:10,client:[],clock:[],close:[6,15],code:[3,5],colon:2,column:[],com:[],come:[2,10],comma:8,command:[2,6,8,10,13,14],complet:8,compon:8,configur:2,connction:[9,11],connect:[6,8,9,10,11,13,14],consist:8,contact:4,contain:[1,8,12],content:[],context:[9,11],convers:8,convienc:[7,13],correctli:10,count:[6,8,10,15],counter:13,cpu:2,creat:[10,11,12],cross:[],csv:8,current:[6,9,11],custom:10,data:[10,14],deal:12,dealer:11,death:13,debug:8,decor:2,decrypt:2,def:[],defeat:8,defer:2,defer_job:2,defin:[6,8,9,11,13],deliv:8,denot:[],describ:8,descript:8,detail:[2,8],detect:8,determin:8,devic:[7,13,14],dialog:8,dict:[2,6,7],dictionari:[7,8],did:2,die:[],differ:3,directli:[7,13],disabl:2,disconnect:[8,9],distribut:8,doe:[],doesn:7,dot:2,down:15,dst:15,duplic:10,dure:11,effort:2,either:8,els:[3,8],empti:8,emqp:[],emqpservic:[],enabl:2,encount:[2,4],end:[2,13],enderlab:[],ensur:[6,8],entri:10,error:2,even:8,event:7,eventloop:6,eventmqerror:4,everi:6,exampl:10,except:[],execut:[2,6,8],exist:[4,6],explicitli:13,expos:6,extra:8,fail:[2,8],failur:2,fair:8,fals:[2,6,8,9,11,13],few:3,field:8,file:[],find:13,finish:[8,10],first:8,fit:8,flag:[2,7],follow:[2,8],form:6,format:[2,6,8,14],forward:14,found:10,foundat:8,frame:[],free:[6,8],from:[4,6,7,8,9,10,11,15],frontend_addr:10,func:[2,6],fwd_emqp_router_messag:14,gener:[6,7,8,9,11,14],generate_msgid:14,github:[],give:2,given:10,gmtime:[],gnu:8,goal:[],good:13,guarante:[2,8],guarente:2,hand:12,handl:[6,8,10],happen:[7,10,11],hasn:[],have:[2,6,13,14],haven:10,header:[],heartbeat:[],heartbeat_timeout:10,heartbeati:13,heartbeatmixin:13,heavi:8,help:[],helper:[],here:[8,10],home:[],hope:8,how:[2,7],html:8,http:8,ident:8,identifi:10,ietf:8,ignor:8,immediatli:2,implement:[8,13],impli:8,includ:[2,8],incom:6,index:5,inform:[6,8,10],inform_typ:[],inherit:4,initi:2,insert:[8,13],instal:3,instanc:6,instanti:[2,6],interpret:8,interv:8,interval_min:[],interval_sec:[],intervalit:[],intes:2,invalidmessageerror:4,is_dead:13,is_heartbeat_en:[],isn:10,issu:[3,5,8],item:10,iter:7,itself:10,job:[],jobmanag:[],jobmanager_main:6,keep:[],kei:[7,8,10],kick:[6,10],know:[2,6,10],kwarg2:2,kwarg:[2,6,7,9,10,11,13],languag:[],last:[2,10],last_recv_heartbeat:[],later:[8,10],least:8,leav:8,length:12,lesser:8,let:8,lib:[],licens:[],like:[6,12,13],list:[2,6,8,10,13],listen:[6,9,10,11],locat:2,log:[2,6,10],logic:[6,10],longer:4,look:13,loop:[7,10],lower:10,mai:[2,8,10,13],main:6,make:12,malform:4,manag:[],mani:[2,8,11],manual:8,master:8,match:[],member:10,memebership:10,merchant:8,mess:15,messag:[],message_bodi:14,message_id:14,messageerror:4,met:13,meta:[10,14],method:[2,6,7,10,13],minut:[],mode:[],modifi:8,modul:[1,2,5,6,12],monoton:[10,13,15],more:[8,12],most:6,msg:[6,8,10,14],msg_id:[],msgid:[6,10],multipart:[8,13],must:[8,13],name:[2,6,8,9,10,11],need:[10,11],never:15,next:7,none:[2,6,9,10,11,13,14],noop:6,note:[6,9,11],now:13,number:[6,15],numer:[],object:[7,13],occur:13,off:[6,10],on_ack:6,on_command:[6,10],on_emqp_command:[],on_heartbeat:[6,10],on_inform:10,on_readi:10,on_receive_repli:[],on_receive_request:10,on_recv:9,on_request:6,on_schedul:[],onc:8,onli:[],onlin:10,option:[2,6,8,9,11,14],org:8,orient:8,origin:8,other:[2,8],otherwis:[2,6,9,11,13],out:[6,13],outgo:[],overwhelm:2,own:13,packag:[],page:5,param:2,paramet:[2,6,7,9,10,11,13,14],pars:[6,14],parse_messag:14,parse_router_messag:14,part:[8,14],particular:[8,11],pass:[2,8,9],path:[2,6],payload:14,peer:[4,8,13],peergoneawayerror:4,per:10,pictur:8,pip:[],placehold:[6,10],point:6,poll:7,poller:[],pollin:7,pollout:7,pool:[8,10],pop:10,portion:6,possibl:3,practic:13,prefix:14,prepend:8,pretti:8,problem:4,process:[6,8,10,11],process_messag:6,process_worker_messag:10,prop:[],properti:[9,11],protocol:[],protocol_vers:13,provid:[10,13],pub:8,publish:8,purpos:8,py2:[],py3:[],python2:[],queu:2,queue:[2,6,8,10],queue_messag:10,quick:2,rais:[2,4,9,11,14],random:[12,14],random_charact:12,raw:13,raw_messag:[],readi:[6,8,9,10,11],rebuild:11,receiv:[],received_disconnect:[],recent:[8,10],reciev:[],recip:[],recipi:[10,13,14],recipient_id:14,recommend:8,reconnect:11,recv:13,recv_multipart:13,redistribut:8,refer:[6,13],regist:[7,10],regular:8,rel:3,reliabl:8,remain:7,remot:13,remov:[8,10],reopen:6,rep:9,repli:[2,6,8,14],reply_request:2,repres:[],req:11,request:[],requeue_work:10,requir:8,requri:[],reset:[6,13],reset_heartbeat_count:13,resourc:[6,8],respond:[8,10],respons:[2,6,9,10,11],restart:[8,11],retri:[2,8],retry_count:2,rfc2119:8,rfc:8,robin:8,roughli:11,round:8,rout:[8,10],router:[],router_main:10,run:[2,6,8],sake:[],same:11,schedul:[],scheduler_id:[],scheduler_queu:[],scheduler_zmq_id:[],search:5,second:15,seconds_until:15,see:[7,8,10],self:[6,10,11],send:[2,4,6,8,10,11,13,14],send_ack:10,send_emqp_messag:14,send_emqp_router_messag:14,send_heartbeat:[10,13],send_inform:6,send_messag:[],send_multipart:13,send_raw:[],send_readi:6,send_request:2,send_schedule_request:[],send_schedulers_heartbeat:[],send_workers_heartbeat:10,sender:[],sender_id:14,sent:[8,10,13],seper:[2,8],serv:8,server:[6,8],servic:8,service_typ:[],set:[2,6,7,8,10,11,13],shall:8,shalt:[],should:[2,4,6,7,8,9,10,11],shown:8,simpl:[10,12],sinc:15,singl:8,site:[],skip:[11,13],skip_zmqstream:11,slot:[6,10],socket:[2,6,7,8,9,10,11,13,14],softwar:8,some:[2,6,12,13,14],someon:8,someth:[2,11,13,15],somewher:3,sourc:[3,5],spawn:6,specif:[],specifi:[8,12,13],start:[],start_valu:[],state:13,statu:8,stop:8,store:[6,10],str:[2,6,9,10,11,12,13,14],string:[2,6,8,9,10,11,14],structur:4,sub:8,subclass:4,subcmd:6,subcommand:[2,6],subject:8,subset:8,subtract:15,success:8,successfulli:2,system:3,take:[6,10,11,14],task:[2,6],tcp:[6,10],tell:6,term:8,than:[],thei:2,them:9,thi:[1,2,4,6,7,8,9,10,11,12,13,15],thing:[2,6,11,12,13,14],thou:[],threshold:13,through:[8,10],thy:[],time:[],timeout:7,timestamp:[8,10,15],timeutil:[],timezon:[],tip:3,tool:8,topic:[],topolog:[],tornado:6,trace:8,track:13,tri:2,tupl:[7,13,14],type:[2,8,9,11,12,13],type_:[],typecast:7,typeerror:9,unbind:[9,11],undefin:7,under:8,uniqu:[6,8,10],unit:6,univers:[],unix:8,unless:[6,9,11],unregist:7,unschedul:8,until:15,untouch:[10,14],unus:[],updat:[],upon:8,upstream:6,usag:[],usual:[],utilit:[],utlitii:[],uuid:[6,9,11],vagrant:[],valid:8,valu:[2,7,8,13,14,15],valueerror:[],variabl:13,version:[3,8,13],via:2,virtualenv:[],wait:[2,6,7],waiting_messag:10,walk:6,want:[],warn:10,warranti:8,weak:13,web:8,well:8,went:2,when:[1,2,3,4,6,8,9,10,11,13],where:[2,8,10,15],which:[8,10],who:[1,10],wish:[2,14],without:[8,11],word:8,work:[3,6,13],worker:[],worker_id:10,worri:8,would:[2,15],wrap:[],wrong:2,you:[2,3,8,10,11,13,14],your:[2,8,13],zcontext:[9,11],zeromq:8,zmq:[7,8,9,10,11,13,14],zmqreceivemixin:13,zmqsendmixin:13,zmqstream:11,zsocket:[9,11]},titles:["API Documentation","<code class=\"docutils literal\"><span class=\"pre\">client</span></code> &#8211; Client Utilities","<code class=\"docutils literal\"><span class=\"pre\">messages</span></code> &#8211; Client Messaging","Contributing to EventMQ","<code class=\"docutils literal\"><span class=\"pre\">exceptions</span></code> &#8211; Exceptions","EventMQ Documentation","<code class=\"docutils literal\"><span class=\"pre\">jobmanager</span></code> &#8211; Job Manager","<code class=\"docutils literal\"><span class=\"pre\">poller</span></code> &#8211; Poller","Goals","<code class=\"docutils literal\"><span class=\"pre\">receiver</span></code> &#8211; Receiver","<code class=\"docutils literal\"><span class=\"pre\">router</span></code> &#8211; Router","<code class=\"docutils literal\"><span class=\"pre\">sender</span></code> &#8211; Sender","<code class=\"docutils literal\"><span class=\"pre\">utils</span></code> &#8211; Utilities","<code class=\"docutils literal\"><span class=\"pre\">classes</span></code> &#8211; Utility Classes","<code class=\"docutils literal\"><span class=\"pre\">messages</span></code> &#8211; Message Utilities","<code class=\"docutils literal\"><span class=\"pre\">timeutils</span></code> &#8211; Time Utilites"],titleterms:{"class":13,address:8,api:0,architectur:8,client:[1,2,8],contribut:3,document:[0,5],emqp:8,eventmq:[3,5],except:4,frame:8,get:[],global:8,glossari:[],goal:8,guid:[],header:8,heartbeat:8,indic:5,job:6,jobmanag:6,languag:8,licens:8,manag:6,messag:[2,14],poller:7,protocol:[],receiv:9,request:8,router:[8,10],schedul:8,sender:11,specif:[],start:[],style:[],tabl:5,time:15,timeutil:15,topolog:8,util:[1,12,13,14],utilit:15,welcom:[],worker:8}}) \ No newline at end of file
diff --git a/utils/classes.html b/utils/classes.html
index af14fda..3c681f4 100644
--- a/utils/classes.html
+++ b/utils/classes.html
@@ -152,117 +152,6 @@
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> 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<p>Defines some classes to use when implementing ZMQ devices</p> 153<p>Defines some classes to use when implementing ZMQ devices</p>
154<dl class="class"> 154<dl class="class">
155<dt id="eventmq.utils.classes.EMQPService">
156<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>
157<dd><p>Helper for devices that connect to brokers.</p>
158<p>Implements utility methods for sending EMQP messages for the following
159EMQP commands.</p>
160<blockquote>
161<div><ul class="simple">
162<li>INFORM</li>
163</ul>
164</div></blockquote>
165<p>Also implements utlitiy methods for managing long-running processes.</p>
166<dl class="docutils">
167<dt>To use you must define:</dt>
168<dd><ul class="first last simple">
169<li><cite>self.outgoing</cite> - socket where messages can be sent to the Router</li>
170<li><cite>self.SERVICE_TYPE</cite> - defines the service type for INFORM. See
171<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>
172<li><cite>self.poller</cite> - the poller that <cite>self.outgoing</cite> will be using.
173Usually: <cite>self.poller = eventmq.poller.Poller()</cite></li>
174</ul>
175</dd>
176</dl>
177<p>When messages are received from the router, they are processed in
178<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
179in the event loop so if you want to respond to the SCHEDULE command, you
180would define the method <cite>on_schedule</cite> in your service class.</p>
181<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>
182<dl class="attribute">
183<dt id="eventmq.utils.classes.EMQPService.__weakref__">
184<code class="descname">__weakref__</code><a class="headerlink" href="#eventmq.utils.classes.EMQPService.__weakref__" title="Permalink to this definition">¶</a></dt>
185<dd><p>list of weak references to the object (if defined)</p>
186</dd></dl>
187
188<dl class="attribute">
189<dt id="eventmq.utils.classes.EMQPService.is_heartbeat_enabled">
190<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>
191<dd><p>Property to check if heartbeating is enabled. Useful when certain
192properties must be updated for heartbeating
193:returns: bool - True if heartbeating is enabled, False if it isn&#8217;t</p>
194</dd></dl>
195
196<dl class="method">
197<dt id="eventmq.utils.classes.EMQPService.on_ack">
198<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>
199<dd><p>Sets <code class="xref py py-attr docutils literal"><span class="pre">awaiting_ack</span></code> to False</p>
200</dd></dl>
201
202<dl class="method">
203<dt id="eventmq.utils.classes.EMQPService.process_message">
204<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>
205<dd><p>Processes a message. Processing takes form of calling an
206<cite>on_EMQP_COMMAND</cite> method. The method must accept <cite>msgid</cite> and <cite>message</cite>
207as the first arguments.</p>
208<table class="docutils field-list" frame="void" rules="none">
209<col class="field-name" />
210<col class="field-body" />
211<tbody valign="top">
212<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>
213</tr>
214</tbody>
215</table>
216</dd></dl>
217
218<dl class="method">
219<dt id="eventmq.utils.classes.EMQPService.reset">
220<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>
221<dd><p>Resets the current connection by closing and reopening the socket</p>
222</dd></dl>
223
224<dl class="method">
225<dt id="eventmq.utils.classes.EMQPService.send_inform">
226<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>
227<dd><p>Queues an INFORM command to <cite>self.outgoing</cite>.</p>
228<table class="docutils field-list" frame="void" rules="none">
229<col class="field-name" />
230<col class="field-body" />
231<tbody valign="top">
232<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
233<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>
234<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>
235<li>For &#8216;worker&#8217; type, the queues the worker is listening on</li>
236<li>Ignored for &#8216;scheduler&#8217; type</li>
237</ul>
238</li>
239</ul>
240</td>
241</tr>
242<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>
243</td>
244</tr>
245</tbody>
246</table>
247</dd></dl>
248
249<dl class="method">
250<dt id="eventmq.utils.classes.EMQPService.start">
251<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>
252<dd><p>Connect to <cite>addr</cite> and begin listening for job requests</p>
253<table class="docutils field-list" frame="void" rules="none">
254<col class="field-name" />
255<col class="field-body" />
256<tbody valign="top">
257<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>
258</tr>
259</tbody>
260</table>
261</dd></dl>
262
263</dd></dl>
264
265<dl class="class">
266<dt id="eventmq.utils.classes.HeartbeatMixin"> 155<dt id="eventmq.utils.classes.HeartbeatMixin">
267<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> 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>
268<dd><p>Provides methods for implementing heartbeats</p> 157<dd><p>Provides methods for implementing heartbeats</p>
diff --git a/utils/timeutils.html b/utils/timeutils.html
index 087322b..72b99ed 100644
--- a/utils/timeutils.html
+++ b/utils/timeutils.html
@@ -150,48 +150,6 @@
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
195<dl class="function"> 153<dl class="function">
196<dt id="eventmq.utils.timeutils.monotonic"> 154<dt id="eventmq.utils.timeutils.monotonic">
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> 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>