diff options
| author | jason | 2016-01-22 16:13:14 -0700 |
|---|---|---|
| committer | jason | 2016-01-22 16:13:14 -0700 |
| commit | 3b4c07b188d1530be556b51eacae99b97ef0e9ff (patch) | |
| tree | f718b280ec66d0582cf5125dbeaf93888a935160 | |
| parent | e37b3e9b8889d539bf943eb76b8d02f18d645b01 (diff) | |
| download | eventmq-3b4c07b188d1530be556b51eacae99b97ef0e9ff.tar.gz eventmq-3b4c07b188d1530be556b51eacae99b97ef0e9ff.zip | |
updates for docs
| -rw-r--r-- | _sources/getting_started.txt | 11 | ||||
| -rw-r--r-- | _sources/glossary.txt | 7 | ||||
| -rw-r--r-- | _sources/protocol.txt | 57 | ||||
| -rw-r--r-- | client/messages.html | 51 | ||||
| -rw-r--r-- | contributing.html | 14 | ||||
| -rw-r--r-- | genindex.html | 166 | ||||
| -rw-r--r-- | getting_started.html | 197 | ||||
| -rw-r--r-- | glossary.html | 196 | ||||
| -rw-r--r-- | index.html | 5 | ||||
| -rw-r--r-- | jobmanager.html | 74 | ||||
| -rw-r--r-- | objects.inv | bin | 963 -> 1163 bytes | |||
| -rw-r--r-- | protocol.html | 204 | ||||
| -rw-r--r-- | receiver.html | 17 | ||||
| -rw-r--r-- | router.html | 125 | ||||
| -rw-r--r-- | searchindex.js | 2 | ||||
| -rw-r--r-- | sender.html | 17 | ||||
| -rw-r--r-- | utils.html | 1 | ||||
| -rw-r--r-- | utils/classes.html | 112 | ||||
| -rw-r--r-- | utils/messages.html | 1 | ||||
| -rw-r--r-- | utils/timeutils.html | 43 |
20 files changed, 1189 insertions, 111 deletions
diff --git a/_sources/getting_started.txt b/_sources/getting_started.txt new file mode 100644 index 0000000..167ca0f --- /dev/null +++ b/_sources/getting_started.txt | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | Getting Started | ||
| 2 | =============== | ||
| 3 | |||
| 4 | To run a simple messaging system run the following | ||
| 5 | |||
| 6 | pip install -r requirements. | ||
| 7 | |||
| 8 | ln -s path/to/eventmq/eventmq /home/vagrant/.virtualenvs/lib/python2.7/site-packages/eventmq | ||
| 9 | |||
| 10 | path/to/eventmq/bin/router - run the router | ||
| 11 | path/to/eventmq/bin/worker - run a worker. run this command more than once to run more than one worker. | ||
diff --git a/_sources/glossary.txt b/_sources/glossary.txt new file mode 100644 index 0000000..d33fbc5 --- /dev/null +++ b/_sources/glossary.txt | |||
| @@ -0,0 +1,7 @@ | |||
| 1 | ******** | ||
| 2 | Glossary | ||
| 3 | ******** | ||
| 4 | |||
| 5 | D | ||
| 6 | === | ||
| 7 | device - The broker and anything that helps the broker (scheduler, jobmanager). | ||
diff --git a/_sources/protocol.txt b/_sources/protocol.txt index e468b06..ddbcfcc 100644 --- a/_sources/protocol.txt +++ b/_sources/protocol.txt | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | ****************************** | 1 | /****************************e |
| 2 | EventMQ Protocol Specification | 2 | EventMQ Protocol Specification |
| 3 | ****************************** | 3 | ****************************** |
| 4 | *The status of this document is alpha and subject to heavy change* | 4 | *The status of this document is alpha and subject to heavy change* |
| @@ -86,10 +86,53 @@ FRAME Value Description | |||
| 86 | 2 PUBLISH command | 86 | 2 PUBLISH command |
| 87 | 3 _MSGID_ A unique id for the msg | 87 | 3 _MSGID_ A unique id for the msg |
| 88 | 4 _TOPIC_NAME_ the name of the queue the worker belongs to | 88 | 4 _TOPIC_NAME_ the name of the queue the worker belongs to |
| 89 | 5 _HEADERS_ dictionary of headers. can be an empty set | 89 | 5 _HEADERS_ csv list of headers |
| 90 | 6 _MSG_ The message to send | 90 | 6 _MSG_ The message to send |
| 91 | ====== ============== =========== | 91 | ====== ============== =========== |
| 92 | 92 | ||
| 93 | A **SCHEDULE** command consists of a 7-frame multipart message, formatted as follows. | ||
| 94 | |||
| 95 | ====== ============== =========== | ||
| 96 | FRAME Value Description | ||
| 97 | ====== ============== =========== | ||
| 98 | 0 _EMPTY_ leave empty | ||
| 99 | 1 eMQP/1.0 Protocol version | ||
| 100 | 2 SCHEDULE command | ||
| 101 | 3 _MSGID_ A unique id for the msg | ||
| 102 | 4 _TOPIC_NAME_ name of queue that the job should run in | ||
| 103 | 5 _HEADERS_ csv list of headers for this message | ||
| 104 | 6 _MSG_ The message to send | ||
| 105 | ====== ============== =========== | ||
| 106 | |||
| 107 | An **UNSCHEDULE** command consists of a 7-frame multipart message, formatted as follows. | ||
| 108 | |||
| 109 | ====== ============== =========== | ||
| 110 | FRAME Value Description | ||
| 111 | ====== ============== =========== | ||
| 112 | 0 _EMPTY_ leave empty | ||
| 113 | 1 eMQP/1.0 Protocol version | ||
| 114 | 2 UNSCHEDULE command | ||
| 115 | 3 _MSGID_ A unique id for the msg | ||
| 116 | 4 _TOPIC_NAME_ ignored for this command, broadcasted to all queues | ||
| 117 | 5 _HEADERS_ csv list of headers for this message | ||
| 118 | 6 _MSG_ The message to send | ||
| 119 | ====== ============== =========== | ||
| 120 | |||
| 121 | eMQP / Scheduler | ||
| 122 | ---------------- | ||
| 123 | An **INFORM** command consists of a 6-frame multipart message, formatted as follows. | ||
| 124 | |||
| 125 | ====== ============== =========== | ||
| 126 | FRAME Value Description | ||
| 127 | ====== ============== =========== | ||
| 128 | 0 _EMPTY_ leave empty | ||
| 129 | 1 eMQP/1.0 Protocol version | ||
| 130 | 2 INFORM command | ||
| 131 | 3 _MSGID_ A unique id for the msg | ||
| 132 | 4 _QUEUE_NAME_ csv seperated names of queue the worker belongs to | ||
| 133 | 5 scheduler type of peer connecting | ||
| 134 | ====== ============== =========== | ||
| 135 | |||
| 93 | eMQP / Worker | 136 | eMQP / Worker |
| 94 | ------------- | 137 | ------------- |
| 95 | An **INFORM** command consists of a 5-frame multipart message, formatted as follows. | 138 | An **INFORM** command consists of a 5-frame multipart message, formatted as follows. |
| @@ -102,6 +145,7 @@ FRAME Value Description | |||
| 102 | 2 INFORM command | 145 | 2 INFORM command |
| 103 | 3 _MSGID_ A unique id for the msg | 146 | 3 _MSGID_ A unique id for the msg |
| 104 | 4 _QUEUE_NAME_ csv seperated names of queue the worker belongs to | 147 | 4 _QUEUE_NAME_ csv seperated names of queue the worker belongs to |
| 148 | 5 worker type of peer connecting | ||
| 105 | ====== ============== =========== | 149 | ====== ============== =========== |
| 106 | 150 | ||
| 107 | A **READY** frame consists of a 4-frame multipart message, formatted as follows. | 151 | A **READY** frame consists of a 4-frame multipart message, formatted as follows. |
| @@ -154,13 +198,16 @@ Heartbeating | |||
| 154 | ------------ | 198 | ------------ |
| 155 | * HEARTBEAT commands are valid at any time after an INFORM command | 199 | * HEARTBEAT commands are valid at any time after an INFORM command |
| 156 | * Any command except DISCONNECT act as a heartbeat. Peers SHOULD NOT send HEARTBEAT commands while sending other commands. | 200 | * Any command except DISCONNECT act as a heartbeat. Peers SHOULD NOT send HEARTBEAT commands while sending other commands. |
| 157 | * Both worker and broker MUST send heartbeats at regular and agreed-upon intervals. | 201 | * Worker and broker MUST send heartbeats at regular and agreed-upon intervals. |
| 202 | * Scheduler and broker MUST send heartbeats at regular and agreed-upon intervals. | ||
| 158 | * If the worker detects that the broker disconnected it SHOULD restart the conversation. | 203 | * If the worker detects that the broker disconnected it SHOULD restart the conversation. |
| 159 | * If the broker detects that a worker has disconnected it should stop sending it a message of any type. | 204 | * If the broker detects that a worker has disconnected it should stop sending it a message of any type. |
| 205 | * If the scheduler detects that the broker disconnects it SHOULD restart the conversation. | ||
| 206 | * If the broker detects that a scheduler has disconnected it should ??????????. | ||
| 160 | 207 | ||
| 161 | Request Headers | 208 | REQUEST Headers |
| 162 | --------------- | 209 | --------------- |
| 163 | Headers MUST be 0 to many comma seperated values inserted into the header field. If there are no headers requried, send an empty string MUST be sent where headers are required. | 210 | Headers MUST be 0 to many comma seperated values inserted into the header field. If there are no headers required, send an empty string MUST be sent where headers are required. |
| 164 | 211 | ||
| 165 | Below is a table which defines and describes the headers. | 212 | Below is a table which defines and describes the headers. |
| 166 | 213 | ||
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>) – 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>) – 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>) – 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>) – 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>) – 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>) – 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>) – dict of <a href="#id15"><span class="problematic" id="id16">**</span></a>kwargs to pass to the class (if | ||
| 244 | applicable)</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>) – list of strings denoting enabled headers. Default: | ||
| 246 | guarantee 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>) – name of the queue to use when executing the job. The | ||
| 248 | default 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 | ||
| 312 | interval 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>) – </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>) – </li> | ||
| 320 | <li><strong>message</strong> – 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>) – 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>) – 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..acdb2b0 100644 --- a/contributing.html +++ b/contributing.html | |||
| @@ -31,7 +31,7 @@ | |||
| 31 | 31 | ||
| 32 | 32 | ||
| 33 | <link rel="top" title="EventMQ 0 documentation" href="index.html"/> | 33 | <link rel="top" title="EventMQ 0 documentation" href="index.html"/> |
| 34 | <link rel="next" title="EventMQ Protocol Specification" href="protocol.html"/> | 34 | <link rel="next" title="Goals" href="protocol.html"/> |
| 35 | <link rel="prev" title="timeutils – Time Utilites" href="utils/timeutils.html"/> | 35 | <link rel="prev" title="timeutils – Time Utilites" href="utils/timeutils.html"/> |
| 36 | 36 | ||
| 37 | 37 | ||
| @@ -84,7 +84,10 @@ | |||
| 84 | <ul class="current"> | 84 | <ul class="current"> |
| 85 | <li class="toctree-l1"><a class="reference internal" href="api.html">API Documentation</a></li> | 85 | <li class="toctree-l1"><a class="reference internal" href="api.html">API Documentation</a></li> |
| 86 | <li class="toctree-l1 current"><a class="current reference internal" href="">Contributing to EventMQ</a><ul> | 86 | <li class="toctree-l1 current"><a class="current reference internal" href="">Contributing to EventMQ</a><ul> |
| 87 | <li class="toctree-l2"><a class="reference internal" href="protocol.html">EventMQ Protocol Specification</a></li> | 87 | <li class="toctree-l2"><a class="reference internal" href="protocol.html">Goals</a></li> |
| 88 | <li class="toctree-l2"><a class="reference internal" href="protocol.html#license">License</a></li> | ||
| 89 | <li class="toctree-l2"><a class="reference internal" href="protocol.html#language">Language</a></li> | ||
| 90 | <li class="toctree-l2"><a class="reference internal" href="protocol.html#architecture">Architecture</a></li> | ||
| 88 | <li class="toctree-l2"><a class="reference external" href="https://github.com/enderlabs/eventmq">Source Code</a></li> | 91 | <li class="toctree-l2"><a class="reference external" href="https://github.com/enderlabs/eventmq">Source Code</a></li> |
| 89 | <li class="toctree-l2"><a class="reference external" href="https://github.com/enderlabs/eventmq/issues">Issues</a></li> | 92 | <li class="toctree-l2"><a class="reference external" href="https://github.com/enderlabs/eventmq/issues">Issues</a></li> |
| 90 | </ul> | 93 | </ul> |
| @@ -143,7 +146,10 @@ | |||
| 143 | </div></blockquote> | 146 | </div></blockquote> |
| 144 | <div class="toctree-wrapper compound"> | 147 | <div class="toctree-wrapper compound"> |
| 145 | <ul> | 148 | <ul> |
| 146 | <li class="toctree-l1"><a class="reference internal" href="protocol.html">EventMQ Protocol Specification</a></li> | 149 | <li class="toctree-l1"><a class="reference internal" href="protocol.html">Goals</a></li> |
| 150 | <li class="toctree-l1"><a class="reference internal" href="protocol.html#license">License</a></li> | ||
| 151 | <li class="toctree-l1"><a class="reference internal" href="protocol.html#language">Language</a></li> | ||
| 152 | <li class="toctree-l1"><a class="reference internal" href="protocol.html#architecture">Architecture</a></li> | ||
| 147 | <li class="toctree-l1"><a class="reference external" href="https://github.com/enderlabs/eventmq">Source Code</a></li> | 153 | <li class="toctree-l1"><a class="reference external" href="https://github.com/enderlabs/eventmq">Source Code</a></li> |
| 148 | <li class="toctree-l1"><a class="reference external" href="https://github.com/enderlabs/eventmq/issues">Issues</a></li> | 154 | <li class="toctree-l1"><a class="reference external" href="https://github.com/enderlabs/eventmq/issues">Issues</a></li> |
| 149 | </ul> | 155 | </ul> |
| @@ -157,7 +163,7 @@ | |||
| 157 | 163 | ||
| 158 | <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> | 164 | <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> |
| 159 | 165 | ||
| 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> | 166 | <a href="protocol.html" class="btn btn-neutral float-right" title="Goals" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a> |
| 161 | 167 | ||
| 162 | 168 | ||
| 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> | 169 | <a href="utils/timeutils.html" class="btn btn-neutral" title="timeutils – Time Utilites" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a> |
diff --git a/genindex.html b/genindex.html index f0f6527..f1aa454 100644 --- a/genindex.html +++ b/genindex.html | |||
| @@ -145,10 +145,12 @@ | |||
| 145 | | <a href="#N"><strong>N</strong></a> | 145 | | <a href="#N"><strong>N</strong></a> |
| 146 | | <a href="#O"><strong>O</strong></a> | 146 | | <a href="#O"><strong>O</strong></a> |
| 147 | | <a href="#P"><strong>P</strong></a> | 147 | | <a href="#P"><strong>P</strong></a> |
| 148 | | <a href="#Q"><strong>Q</strong></a> | ||
| 148 | | <a href="#R"><strong>R</strong></a> | 149 | | <a href="#R"><strong>R</strong></a> |
| 149 | | <a href="#S"><strong>S</strong></a> | 150 | | <a href="#S"><strong>S</strong></a> |
| 150 | | <a href="#T"><strong>T</strong></a> | 151 | | <a href="#T"><strong>T</strong></a> |
| 151 | | <a href="#U"><strong>U</strong></a> | 152 | | <a href="#U"><strong>U</strong></a> |
| 153 | | <a href="#W"><strong>W</strong></a> | ||
| 152 | | <a href="#Z"><strong>Z</strong></a> | 154 | | <a href="#Z"><strong>Z</strong></a> |
| 153 | 155 | ||
| 154 | </div> | 156 | </div> |
| @@ -176,15 +178,23 @@ | |||
| 176 | <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> |
| 177 | </dt> | 179 | </dt> |
| 178 | 180 | ||
| 181 | |||
| 182 | <dt><a href="utils/timeutils.html#eventmq.utils.timeutils.IntervalIter.__init__">(eventmq.utils.timeutils.IntervalIter method)</a> | ||
| 183 | </dt> | ||
| 184 | |||
| 179 | </dl></dd> | 185 | </dl></dd> |
| 180 | </dl></td> | 186 | </dl></td> |
| 181 | <td style="width: 33%" valign="top"><dl> | 187 | <td style="width: 33%" valign="top"><dl> |
| 182 | 188 | ||
| 183 | <dt><a href="utils/classes.html#eventmq.utils.classes.HeartbeatMixin.__weakref__">__weakref__ (eventmq.utils.classes.HeartbeatMixin attribute)</a> | 189 | <dt><a href="utils/classes.html#eventmq.utils.classes.EMQPService.__weakref__">__weakref__ (eventmq.utils.classes.EMQPService attribute)</a> |
| 184 | </dt> | 190 | </dt> |
| 185 | 191 | ||
| 186 | <dd><dl> | 192 | <dd><dl> |
| 187 | 193 | ||
| 194 | <dt><a href="utils/classes.html#eventmq.utils.classes.HeartbeatMixin.__weakref__">(eventmq.utils.classes.HeartbeatMixin attribute)</a> | ||
| 195 | </dt> | ||
| 196 | |||
| 197 | |||
| 188 | <dt><a href="utils/classes.html#eventmq.utils.classes.ZMQReceiveMixin.__weakref__">(eventmq.utils.classes.ZMQReceiveMixin attribute)</a> | 198 | <dt><a href="utils/classes.html#eventmq.utils.classes.ZMQReceiveMixin.__weakref__">(eventmq.utils.classes.ZMQReceiveMixin attribute)</a> |
| 189 | </dt> | 199 | </dt> |
| 190 | 200 | ||
| @@ -192,6 +202,10 @@ | |||
| 192 | <dt><a href="utils/classes.html#eventmq.utils.classes.ZMQSendMixin.__weakref__">(eventmq.utils.classes.ZMQSendMixin attribute)</a> | 202 | <dt><a href="utils/classes.html#eventmq.utils.classes.ZMQSendMixin.__weakref__">(eventmq.utils.classes.ZMQSendMixin attribute)</a> |
| 193 | </dt> | 203 | </dt> |
| 194 | 204 | ||
| 205 | |||
| 206 | <dt><a href="utils/timeutils.html#eventmq.utils.timeutils.IntervalIter.__weakref__">(eventmq.utils.timeutils.IntervalIter attribute)</a> | ||
| 207 | </dt> | ||
| 208 | |||
| 195 | </dl></dd> | 209 | </dl></dd> |
| 196 | </dl></td> | 210 | </dl></td> |
| 197 | </tr></table> | 211 | </tr></table> |
| @@ -200,9 +214,23 @@ | |||
| 200 | <table style="width: 100%" class="indextable genindextable"><tr> | 214 | <table style="width: 100%" class="indextable genindextable"><tr> |
| 201 | <td style="width: 33%" valign="top"><dl> | 215 | <td style="width: 33%" valign="top"><dl> |
| 202 | 216 | ||
| 217 | <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.active_jobs">active_jobs (eventmq.jobmanager.JobManager attribute)</a> | ||
| 218 | </dt> | ||
| 219 | |||
| 220 | |||
| 221 | <dt><a href="router.html#eventmq.router.Router.add_scheduler">add_scheduler() (eventmq.router.Router method)</a> | ||
| 222 | </dt> | ||
| 223 | |||
| 224 | </dl></td> | ||
| 225 | <td style="width: 33%" valign="top"><dl> | ||
| 226 | |||
| 203 | <dt><a href="router.html#eventmq.router.Router.add_worker">add_worker() (eventmq.router.Router method)</a> | 227 | <dt><a href="router.html#eventmq.router.Router.add_worker">add_worker() (eventmq.router.Router method)</a> |
| 204 | </dt> | 228 | </dt> |
| 205 | 229 | ||
| 230 | |||
| 231 | <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.available_workers">available_workers (eventmq.jobmanager.JobManager attribute)</a> | ||
| 232 | </dt> | ||
| 233 | |||
| 206 | </dl></td> | 234 | </dl></td> |
| 207 | </tr></table> | 235 | </tr></table> |
| 208 | 236 | ||
| @@ -220,6 +248,10 @@ | |||
| 220 | <table style="width: 100%" class="indextable genindextable"><tr> | 248 | <table style="width: 100%" class="indextable genindextable"><tr> |
| 221 | <td style="width: 33%" valign="top"><dl> | 249 | <td style="width: 33%" valign="top"><dl> |
| 222 | 250 | ||
| 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 | |||
| 223 | <dt><a href="router.html#eventmq.router.Router.clean_up_dead_workers">clean_up_dead_workers() (eventmq.router.Router method)</a> | 255 | <dt><a href="router.html#eventmq.router.Router.clean_up_dead_workers">clean_up_dead_workers() (eventmq.router.Router method)</a> |
| 224 | </dt> | 256 | </dt> |
| 225 | 257 | ||
| @@ -252,6 +284,10 @@ | |||
| 252 | <table style="width: 100%" class="indextable genindextable"><tr> | 284 | <table style="width: 100%" class="indextable genindextable"><tr> |
| 253 | <td style="width: 33%" valign="top"><dl> | 285 | <td style="width: 33%" valign="top"><dl> |
| 254 | 286 | ||
| 287 | <dt><a href="utils/classes.html#eventmq.utils.classes.EMQPService">EMQPService (class in eventmq.utils.classes)</a> | ||
| 288 | </dt> | ||
| 289 | |||
| 290 | |||
| 255 | <dt><a href="client.html#module-eventmq.client">eventmq.client (module)</a> | 291 | <dt><a href="client.html#module-eventmq.client">eventmq.client (module)</a> |
| 256 | </dt> | 292 | </dt> |
| 257 | 293 | ||
| @@ -275,12 +311,12 @@ | |||
| 275 | <dt><a href="receiver.html#module-eventmq.receiver">eventmq.receiver (module)</a> | 311 | <dt><a href="receiver.html#module-eventmq.receiver">eventmq.receiver (module)</a> |
| 276 | </dt> | 312 | </dt> |
| 277 | 313 | ||
| 314 | </dl></td> | ||
| 315 | <td style="width: 33%" valign="top"><dl> | ||
| 278 | 316 | ||
| 279 | <dt><a href="router.html#module-eventmq.router">eventmq.router (module)</a> | 317 | <dt><a href="router.html#module-eventmq.router">eventmq.router (module)</a> |
| 280 | </dt> | 318 | </dt> |
| 281 | 319 | ||
| 282 | </dl></td> | ||
| 283 | <td style="width: 33%" valign="top"><dl> | ||
| 284 | 320 | ||
| 285 | <dt><a href="sender.html#module-eventmq.sender">eventmq.sender (module)</a> | 321 | <dt><a href="sender.html#module-eventmq.sender">eventmq.sender (module)</a> |
| 286 | </dt> | 322 | </dt> |
| @@ -342,6 +378,10 @@ | |||
| 342 | <table style="width: 100%" class="indextable genindextable"><tr> | 378 | <table style="width: 100%" class="indextable genindextable"><tr> |
| 343 | <td style="width: 33%" valign="top"><dl> | 379 | <td style="width: 33%" valign="top"><dl> |
| 344 | 380 | ||
| 381 | <dt><a href="utils/timeutils.html#eventmq.utils.timeutils.IntervalIter">IntervalIter (class in eventmq.utils.timeutils)</a> | ||
| 382 | </dt> | ||
| 383 | |||
| 384 | |||
| 345 | <dt><a href="exceptions.html#eventmq.exceptions.InvalidMessageError">InvalidMessageError</a> | 385 | <dt><a href="exceptions.html#eventmq.exceptions.InvalidMessageError">InvalidMessageError</a> |
| 346 | </dt> | 386 | </dt> |
| 347 | 387 | ||
| @@ -351,6 +391,10 @@ | |||
| 351 | <dt><a href="utils/classes.html#eventmq.utils.classes.HeartbeatMixin.is_dead">is_dead() (eventmq.utils.classes.HeartbeatMixin method)</a> | 391 | <dt><a href="utils/classes.html#eventmq.utils.classes.HeartbeatMixin.is_dead">is_dead() (eventmq.utils.classes.HeartbeatMixin method)</a> |
| 352 | </dt> | 392 | </dt> |
| 353 | 393 | ||
| 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 | |||
| 354 | </dl></td> | 398 | </dl></td> |
| 355 | </tr></table> | 399 | </tr></table> |
| 356 | 400 | ||
| @@ -361,10 +405,14 @@ | |||
| 361 | <dt><a href="client/messages.html#eventmq.client.messages.job">job() (in module eventmq.client.messages)</a> | 405 | <dt><a href="client/messages.html#eventmq.client.messages.job">job() (in module eventmq.client.messages)</a> |
| 362 | </dt> | 406 | </dt> |
| 363 | 407 | ||
| 408 | |||
| 409 | <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager">JobManager (class in eventmq.jobmanager)</a> | ||
| 410 | </dt> | ||
| 411 | |||
| 364 | </dl></td> | 412 | </dl></td> |
| 365 | <td style="width: 33%" valign="top"><dl> | 413 | <td style="width: 33%" valign="top"><dl> |
| 366 | 414 | ||
| 367 | <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager">JobManager (class in eventmq.jobmanager)</a> | 415 | <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.jobmanager_main">jobmanager_main() (eventmq.jobmanager.JobManager method)</a> |
| 368 | </dt> | 416 | </dt> |
| 369 | 417 | ||
| 370 | </dl></td> | 418 | </dl></td> |
| @@ -406,11 +454,15 @@ | |||
| 406 | <table style="width: 100%" class="indextable genindextable"><tr> | 454 | <table style="width: 100%" class="indextable genindextable"><tr> |
| 407 | <td style="width: 33%" valign="top"><dl> | 455 | <td style="width: 33%" valign="top"><dl> |
| 408 | 456 | ||
| 409 | <dt><a href="receiver.html#eventmq.receiver.Receiver.name">name (eventmq.receiver.Receiver attribute)</a> | 457 | <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.name">name (eventmq.jobmanager.JobManager attribute)</a> |
| 410 | </dt> | 458 | </dt> |
| 411 | 459 | ||
| 412 | <dd><dl> | 460 | <dd><dl> |
| 413 | 461 | ||
| 462 | <dt><a href="receiver.html#eventmq.receiver.Receiver.name">(eventmq.receiver.Receiver attribute)</a> | ||
| 463 | </dt> | ||
| 464 | |||
| 465 | |||
| 414 | <dt><a href="sender.html#eventmq.sender.Sender.name">(eventmq.sender.Sender attribute)</a> | 466 | <dt><a href="sender.html#eventmq.sender.Sender.name">(eventmq.sender.Sender attribute)</a> |
| 415 | </dt> | 467 | </dt> |
| 416 | 468 | ||
| @@ -422,7 +474,7 @@ | |||
| 422 | <table style="width: 100%" class="indextable genindextable"><tr> | 474 | <table style="width: 100%" class="indextable genindextable"><tr> |
| 423 | <td style="width: 33%" valign="top"><dl> | 475 | <td style="width: 33%" valign="top"><dl> |
| 424 | 476 | ||
| 425 | <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.on_ack">on_ack() (eventmq.jobmanager.JobManager method)</a> | 477 | <dt><a href="utils/classes.html#eventmq.utils.classes.EMQPService.on_ack">on_ack() (eventmq.utils.classes.EMQPService method)</a> |
| 426 | </dt> | 478 | </dt> |
| 427 | 479 | ||
| 428 | 480 | ||
| @@ -439,12 +491,12 @@ | |||
| 439 | <dt><a href="router.html#eventmq.router.Router.on_inform">on_inform() (eventmq.router.Router method)</a> | 491 | <dt><a href="router.html#eventmq.router.Router.on_inform">on_inform() (eventmq.router.Router method)</a> |
| 440 | </dt> | 492 | </dt> |
| 441 | 493 | ||
| 442 | </dl></td> | ||
| 443 | <td style="width: 33%" valign="top"><dl> | ||
| 444 | 494 | ||
| 445 | <dt><a href="router.html#eventmq.router.Router.on_ready">on_ready() (eventmq.router.Router method)</a> | 495 | <dt><a href="router.html#eventmq.router.Router.on_ready">on_ready() (eventmq.router.Router method)</a> |
| 446 | </dt> | 496 | </dt> |
| 447 | 497 | ||
| 498 | </dl></td> | ||
| 499 | <td style="width: 33%" valign="top"><dl> | ||
| 448 | 500 | ||
| 449 | <dt><a href="router.html#eventmq.router.Router.on_receive_request">on_receive_request() (eventmq.router.Router method)</a> | 501 | <dt><a href="router.html#eventmq.router.Router.on_receive_request">on_receive_request() (eventmq.router.Router method)</a> |
| 450 | </dt> | 502 | </dt> |
| @@ -453,6 +505,10 @@ | |||
| 453 | <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.on_request">on_request() (eventmq.jobmanager.JobManager method)</a> | 505 | <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.on_request">on_request() (eventmq.jobmanager.JobManager method)</a> |
| 454 | </dt> | 506 | </dt> |
| 455 | 507 | ||
| 508 | |||
| 509 | <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.outgoing">outgoing (eventmq.jobmanager.JobManager attribute)</a> | ||
| 510 | </dt> | ||
| 511 | |||
| 456 | </dl></td> | 512 | </dl></td> |
| 457 | </tr></table> | 513 | </tr></table> |
| 458 | 514 | ||
| @@ -482,7 +538,7 @@ | |||
| 482 | </dt> | 538 | </dt> |
| 483 | 539 | ||
| 484 | 540 | ||
| 485 | <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.process_message">process_message() (eventmq.jobmanager.JobManager method)</a> | 541 | <dt><a href="utils/classes.html#eventmq.utils.classes.EMQPService.process_message">process_message() (eventmq.utils.classes.EMQPService method)</a> |
| 486 | </dt> | 542 | </dt> |
| 487 | 543 | ||
| 488 | 544 | ||
| @@ -492,6 +548,22 @@ | |||
| 492 | </dl></td> | 548 | </dl></td> |
| 493 | </tr></table> | 549 | </tr></table> |
| 494 | 550 | ||
| 551 | <h2 id="Q">Q</h2> | ||
| 552 | <table style="width: 100%" class="indextable genindextable"><tr> | ||
| 553 | <td style="width: 33%" valign="top"><dl> | ||
| 554 | |||
| 555 | <dt><a href="router.html#eventmq.router.Router.queue_message">queue_message() (eventmq.router.Router method)</a> | ||
| 556 | </dt> | ||
| 557 | |||
| 558 | </dl></td> | ||
| 559 | <td style="width: 33%" valign="top"><dl> | ||
| 560 | |||
| 561 | <dt><a href="router.html#eventmq.router.Router.queues">queues (eventmq.router.Router attribute)</a> | ||
| 562 | </dt> | ||
| 563 | |||
| 564 | </dl></td> | ||
| 565 | </tr></table> | ||
| 566 | |||
| 495 | <h2 id="R">R</h2> | 567 | <h2 id="R">R</h2> |
| 496 | <table style="width: 100%" class="indextable genindextable"><tr> | 568 | <table style="width: 100%" class="indextable genindextable"><tr> |
| 497 | <td style="width: 33%" valign="top"><dl> | 569 | <td style="width: 33%" valign="top"><dl> |
| @@ -514,6 +586,10 @@ | |||
| 514 | </dt> | 586 | </dt> |
| 515 | 587 | ||
| 516 | 588 | ||
| 589 | <dt><a href="router.html#eventmq.router.Router.received_disconnect">received_disconnect (eventmq.router.Router attribute)</a> | ||
| 590 | </dt> | ||
| 591 | |||
| 592 | |||
| 517 | <dt><a href="receiver.html#eventmq.receiver.Receiver">Receiver (class in eventmq.receiver)</a> | 593 | <dt><a href="receiver.html#eventmq.receiver.Receiver">Receiver (class in eventmq.receiver)</a> |
| 518 | </dt> | 594 | </dt> |
| 519 | 595 | ||
| @@ -536,17 +612,27 @@ | |||
| 536 | </dt> | 612 | </dt> |
| 537 | 613 | ||
| 538 | 614 | ||
| 539 | <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.reset">reset() (eventmq.jobmanager.JobManager method)</a> | 615 | <dt><a href="utils/classes.html#eventmq.utils.classes.EMQPService.reset">reset() (eventmq.utils.classes.EMQPService method)</a> |
| 540 | </dt> | 616 | </dt> |
| 541 | 617 | ||
| 542 | 618 | ||
| 543 | <dt><a href="utils/classes.html#eventmq.utils.classes.HeartbeatMixin.reset_heartbeat_counters">reset_heartbeat_counters() (eventmq.utils.classes.HeartbeatMixin method)</a> | 619 | <dt><a href="router.html#eventmq.router.Router.reset_heartbeat_counters">reset_heartbeat_counters() (eventmq.router.Router method)</a> |
| 544 | </dt> | 620 | </dt> |
| 545 | 621 | ||
| 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> | ||
| 546 | 628 | ||
| 547 | <dt><a href="router.html#eventmq.router.Router">Router (class in eventmq.router)</a> | 629 | <dt><a href="router.html#eventmq.router.Router">Router (class in eventmq.router)</a> |
| 548 | </dt> | 630 | </dt> |
| 549 | 631 | ||
| 632 | |||
| 633 | <dt><a href="router.html#eventmq.router.Router.router_main">router_main() (eventmq.router.Router method)</a> | ||
| 634 | </dt> | ||
| 635 | |||
| 550 | </dl></td> | 636 | </dl></td> |
| 551 | </tr></table> | 637 | </tr></table> |
| 552 | 638 | ||
| @@ -554,6 +640,18 @@ | |||
| 554 | <table style="width: 100%" class="indextable genindextable"><tr> | 640 | <table style="width: 100%" class="indextable genindextable"><tr> |
| 555 | <td style="width: 33%" valign="top"><dl> | 641 | <td style="width: 33%" valign="top"><dl> |
| 556 | 642 | ||
| 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 | |||
| 557 | <dt><a href="utils/timeutils.html#eventmq.utils.timeutils.seconds_until">seconds_until() (in module eventmq.utils.timeutils)</a> | 655 | <dt><a href="utils/timeutils.html#eventmq.utils.timeutils.seconds_until">seconds_until() (in module eventmq.utils.timeutils)</a> |
| 558 | </dt> | 656 | </dt> |
| 559 | 657 | ||
| @@ -583,12 +681,12 @@ | |||
| 583 | </dt> | 681 | </dt> |
| 584 | 682 | ||
| 585 | </dl></dd> | 683 | </dl></dd> |
| 684 | </dl></td> | ||
| 685 | <td style="width: 33%" valign="top"><dl> | ||
| 586 | 686 | ||
| 587 | <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.send_inform">send_inform() (eventmq.jobmanager.JobManager method)</a> | 687 | <dt><a href="utils/classes.html#eventmq.utils.classes.EMQPService.send_inform">send_inform() (eventmq.utils.classes.EMQPService method)</a> |
| 588 | </dt> | 688 | </dt> |
| 589 | 689 | ||
| 590 | </dl></td> | ||
| 591 | <td style="width: 33%" valign="top"><dl> | ||
| 592 | 690 | ||
| 593 | <dt><a href="utils/classes.html#eventmq.utils.classes.ZMQSendMixin.send_multipart">send_multipart() (eventmq.utils.classes.ZMQSendMixin method)</a> | 691 | <dt><a href="utils/classes.html#eventmq.utils.classes.ZMQSendMixin.send_multipart">send_multipart() (eventmq.utils.classes.ZMQSendMixin method)</a> |
| 594 | </dt> | 692 | </dt> |
| @@ -602,6 +700,14 @@ | |||
| 602 | </dt> | 700 | </dt> |
| 603 | 701 | ||
| 604 | 702 | ||
| 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 | |||
| 605 | <dt><a href="router.html#eventmq.router.Router.send_workers_heartbeats">send_workers_heartbeats() (eventmq.router.Router method)</a> | 711 | <dt><a href="router.html#eventmq.router.Router.send_workers_heartbeats">send_workers_heartbeats() (eventmq.router.Router method)</a> |
| 606 | </dt> | 712 | </dt> |
| 607 | 713 | ||
| @@ -610,12 +716,12 @@ | |||
| 610 | </dt> | 716 | </dt> |
| 611 | 717 | ||
| 612 | 718 | ||
| 613 | <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.start">start() (eventmq.jobmanager.JobManager method)</a> | 719 | <dt><a href="router.html#eventmq.router.Router.start">start() (eventmq.router.Router method)</a> |
| 614 | </dt> | 720 | </dt> |
| 615 | 721 | ||
| 616 | <dd><dl> | 722 | <dd><dl> |
| 617 | 723 | ||
| 618 | <dt><a href="router.html#eventmq.router.Router.start">(eventmq.router.Router method)</a> | 724 | <dt><a href="utils/classes.html#eventmq.utils.classes.EMQPService.start">(eventmq.utils.classes.EMQPService method)</a> |
| 619 | </dt> | 725 | </dt> |
| 620 | 726 | ||
| 621 | </dl></dd> | 727 | </dl></dd> |
| @@ -636,12 +742,40 @@ | |||
| 636 | <table style="width: 100%" class="indextable genindextable"><tr> | 742 | <table style="width: 100%" class="indextable genindextable"><tr> |
| 637 | <td style="width: 33%" valign="top"><dl> | 743 | <td style="width: 33%" valign="top"><dl> |
| 638 | 744 | ||
| 745 | <dt><a href="receiver.html#eventmq.receiver.Receiver.unbind">unbind() (eventmq.receiver.Receiver method)</a> | ||
| 746 | </dt> | ||
| 747 | |||
| 748 | <dd><dl> | ||
| 749 | |||
| 750 | <dt><a href="sender.html#eventmq.sender.Sender.unbind">(eventmq.sender.Sender method)</a> | ||
| 751 | </dt> | ||
| 752 | |||
| 753 | </dl></dd> | ||
| 754 | </dl></td> | ||
| 755 | <td style="width: 33%" valign="top"><dl> | ||
| 756 | |||
| 639 | <dt><a href="poller.html#eventmq.poller.Poller.unregister">unregister() (eventmq.poller.Poller method)</a> | 757 | <dt><a href="poller.html#eventmq.poller.Poller.unregister">unregister() (eventmq.poller.Poller method)</a> |
| 640 | </dt> | 758 | </dt> |
| 641 | 759 | ||
| 642 | </dl></td> | 760 | </dl></td> |
| 643 | </tr></table> | 761 | </tr></table> |
| 644 | 762 | ||
| 763 | <h2 id="W">W</h2> | ||
| 764 | <table style="width: 100%" class="indextable genindextable"><tr> | ||
| 765 | <td style="width: 33%" valign="top"><dl> | ||
| 766 | |||
| 767 | <dt><a href="router.html#eventmq.router.Router.waiting_messages">waiting_messages (eventmq.router.Router attribute)</a> | ||
| 768 | </dt> | ||
| 769 | |||
| 770 | </dl></td> | ||
| 771 | <td style="width: 33%" valign="top"><dl> | ||
| 772 | |||
| 773 | <dt><a href="router.html#eventmq.router.Router.workers">workers (eventmq.router.Router attribute)</a> | ||
| 774 | </dt> | ||
| 775 | |||
| 776 | </dl></td> | ||
| 777 | </tr></table> | ||
| 778 | |||
| 645 | <h2 id="Z">Z</h2> | 779 | <h2 id="Z">Z</h2> |
| 646 | <table style="width: 100%" class="indextable genindextable"><tr> | 780 | <table style="width: 100%" class="indextable genindextable"><tr> |
| 647 | <td style="width: 33%" valign="top"><dl> | 781 | <td style="width: 33%" valign="top"><dl> |
diff --git a/getting_started.html b/getting_started.html new file mode 100644 index 0000000..5b254f8 --- /dev/null +++ b/getting_started.html | |||
| @@ -0,0 +1,197 @@ | |||
| 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>Getting Started — 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 | |||
| 35 | |||
| 36 | <script src="_static/js/modernizr.min.js"></script> | ||
| 37 | |||
| 38 | </head> | ||
| 39 | |||
| 40 | <body class="wy-body-for-nav" role="document"> | ||
| 41 | |||
| 42 | <div class="wy-grid-for-nav"> | ||
| 43 | |||
| 44 | |||
| 45 | <nav data-toggle="wy-nav-shift" class="wy-nav-side"> | ||
| 46 | <div class="wy-side-scroll"> | ||
| 47 | <div class="wy-side-nav-search"> | ||
| 48 | |||
| 49 | |||
| 50 | |||
| 51 | <a href="index.html" class="icon icon-home"> EventMQ | ||
| 52 | |||
| 53 | |||
| 54 | |||
| 55 | </a> | ||
| 56 | |||
| 57 | |||
| 58 | |||
| 59 | |||
| 60 | <div class="version"> | ||
| 61 | 0 | ||
| 62 | </div> | ||
| 63 | |||
| 64 | |||
| 65 | |||
| 66 | |||
| 67 | <div role="search"> | ||
| 68 | <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> | ||
| 69 | <input type="text" name="q" placeholder="Search docs" /> | ||
| 70 | <input type="hidden" name="check_keywords" value="yes" /> | ||
| 71 | <input type="hidden" name="area" value="default" /> | ||
| 72 | </form> | ||
| 73 | </div> | ||
| 74 | |||
| 75 | |||
| 76 | </div> | ||
| 77 | |||
| 78 | <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> | ||
| 79 | |||
| 80 | |||
| 81 | |||
| 82 | <ul> | ||
| 83 | <li class="toctree-l1"><a class="reference internal" href="api.html">API Documentation</a></li> | ||
| 84 | <li class="toctree-l1"><a class="reference internal" href="contributing.html">Contributing to EventMQ</a></li> | ||
| 85 | </ul> | ||
| 86 | |||
| 87 | |||
| 88 | |||
| 89 | </div> | ||
| 90 | </div> | ||
| 91 | </nav> | ||
| 92 | |||
| 93 | <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> | ||
| 94 | |||
| 95 | |||
| 96 | <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> | ||
| 97 | <i data-toggle="wy-nav-top" class="fa fa-bars"></i> | ||
| 98 | <a href="index.html">EventMQ</a> | ||
| 99 | </nav> | ||
| 100 | |||
| 101 | |||
| 102 | |||
| 103 | <div class="wy-nav-content"> | ||
| 104 | <div class="rst-content"> | ||
| 105 | |||
| 106 | |||
| 107 | |||
| 108 | |||
| 109 | |||
| 110 | |||
| 111 | <div role="navigation" aria-label="breadcrumbs navigation"> | ||
| 112 | <ul class="wy-breadcrumbs"> | ||
| 113 | <li><a href="index.html">Docs</a> »</li> | ||
| 114 | |||
| 115 | <li>Getting Started</li> | ||
| 116 | <li class="wy-breadcrumbs-aside"> | ||
| 117 | |||
| 118 | |||
| 119 | <a href="_sources/getting_started.txt" rel="nofollow"> View page source</a> | ||
| 120 | |||
| 121 | |||
| 122 | </li> | ||
| 123 | </ul> | ||
| 124 | <hr/> | ||
| 125 | </div> | ||
| 126 | <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> | ||
| 127 | <div itemprop="articleBody"> | ||
| 128 | |||
| 129 | <div class="section" id="getting-started"> | ||
| 130 | <h1>Getting Started<a class="headerlink" href="#getting-started" title="Permalink to this headline">¶</a></h1> | ||
| 131 | <p>To run a simple messaging system run the following</p> | ||
| 132 | <p>pip install -r requirements.</p> | ||
| 133 | <p>ln -s path/to/eventmq/eventmq /home/vagrant/.virtualenvs/lib/python2.7/site-packages/eventmq</p> | ||
| 134 | <p>path/to/eventmq/bin/router - run the router | ||
| 135 | path/to/eventmq/bin/worker - run a worker. run this command more than once to run more than one worker.</p> | ||
| 136 | </div> | ||
| 137 | |||
| 138 | |||
| 139 | </div> | ||
| 140 | </div> | ||
| 141 | <footer> | ||
| 142 | |||
| 143 | |||
| 144 | <hr/> | ||
| 145 | |||
| 146 | <div role="contentinfo"> | ||
| 147 | <p> | ||
| 148 | © Copyright 2015, eventboard.io. | ||
| 149 | |||
| 150 | </p> | ||
| 151 | </div> | ||
| 152 | 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>. | ||
| 153 | |||
| 154 | </footer> | ||
| 155 | |||
| 156 | </div> | ||
| 157 | </div> | ||
| 158 | |||
| 159 | </section> | ||
| 160 | |||
| 161 | </div> | ||
| 162 | |||
| 163 | |||
| 164 | |||
| 165 | |||
| 166 | |||
| 167 | <script type="text/javascript"> | ||
| 168 | var DOCUMENTATION_OPTIONS = { | ||
| 169 | URL_ROOT:'./', | ||
| 170 | VERSION:'0', | ||
| 171 | COLLAPSE_INDEX:false, | ||
| 172 | FILE_SUFFIX:'.html', | ||
| 173 | HAS_SOURCE: true | ||
| 174 | }; | ||
| 175 | </script> | ||
| 176 | <script type="text/javascript" src="_static/jquery.js"></script> | ||
| 177 | <script type="text/javascript" src="_static/underscore.js"></script> | ||
| 178 | <script type="text/javascript" src="_static/doctools.js"></script> | ||
| 179 | |||
| 180 | |||
| 181 | |||
| 182 | |||
| 183 | |||
| 184 | <script type="text/javascript" src="_static/js/theme.js"></script> | ||
| 185 | |||
| 186 | |||
| 187 | |||
| 188 | |||
| 189 | <script type="text/javascript"> | ||
| 190 | jQuery(function () { | ||
| 191 | SphinxRtdTheme.StickyNav.enable(); | ||
| 192 | }); | ||
| 193 | </script> | ||
| 194 | |||
| 195 | |||
| 196 | </body> | ||
| 197 | </html> \ No newline at end of file | ||
diff --git a/glossary.html b/glossary.html new file mode 100644 index 0000000..d49f7f6 --- /dev/null +++ b/glossary.html | |||
| @@ -0,0 +1,196 @@ | |||
| 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>Glossary — 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 | |||
| 35 | |||
| 36 | <script src="_static/js/modernizr.min.js"></script> | ||
| 37 | |||
| 38 | </head> | ||
| 39 | |||
| 40 | <body class="wy-body-for-nav" role="document"> | ||
| 41 | |||
| 42 | <div class="wy-grid-for-nav"> | ||
| 43 | |||
| 44 | |||
| 45 | <nav data-toggle="wy-nav-shift" class="wy-nav-side"> | ||
| 46 | <div class="wy-side-scroll"> | ||
| 47 | <div class="wy-side-nav-search"> | ||
| 48 | |||
| 49 | |||
| 50 | |||
| 51 | <a href="index.html" class="icon icon-home"> EventMQ | ||
| 52 | |||
| 53 | |||
| 54 | |||
| 55 | </a> | ||
| 56 | |||
| 57 | |||
| 58 | |||
| 59 | |||
| 60 | <div class="version"> | ||
| 61 | 0 | ||
| 62 | </div> | ||
| 63 | |||
| 64 | |||
| 65 | |||
| 66 | |||
| 67 | <div role="search"> | ||
| 68 | <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> | ||
| 69 | <input type="text" name="q" placeholder="Search docs" /> | ||
| 70 | <input type="hidden" name="check_keywords" value="yes" /> | ||
| 71 | <input type="hidden" name="area" value="default" /> | ||
| 72 | </form> | ||
| 73 | </div> | ||
| 74 | |||
| 75 | |||
| 76 | </div> | ||
| 77 | |||
| 78 | <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> | ||
| 79 | |||
| 80 | |||
| 81 | |||
| 82 | <ul> | ||
| 83 | <li class="toctree-l1"><a class="reference internal" href="api.html">API Documentation</a></li> | ||
| 84 | <li class="toctree-l1"><a class="reference internal" href="contributing.html">Contributing to EventMQ</a></li> | ||
| 85 | </ul> | ||
| 86 | |||
| 87 | |||
| 88 | |||
| 89 | </div> | ||
| 90 | </div> | ||
| 91 | </nav> | ||
| 92 | |||
| 93 | <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> | ||
| 94 | |||
| 95 | |||
| 96 | <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> | ||
| 97 | <i data-toggle="wy-nav-top" class="fa fa-bars"></i> | ||
| 98 | <a href="index.html">EventMQ</a> | ||
| 99 | </nav> | ||
| 100 | |||
| 101 | |||
| 102 | |||
| 103 | <div class="wy-nav-content"> | ||
| 104 | <div class="rst-content"> | ||
| 105 | |||
| 106 | |||
| 107 | |||
| 108 | |||
| 109 | |||
| 110 | |||
| 111 | <div role="navigation" aria-label="breadcrumbs navigation"> | ||
| 112 | <ul class="wy-breadcrumbs"> | ||
| 113 | <li><a href="index.html">Docs</a> »</li> | ||
| 114 | |||
| 115 | <li>Glossary</li> | ||
| 116 | <li class="wy-breadcrumbs-aside"> | ||
| 117 | |||
| 118 | |||
| 119 | <a href="_sources/glossary.txt" rel="nofollow"> View page source</a> | ||
| 120 | |||
| 121 | |||
| 122 | </li> | ||
| 123 | </ul> | ||
| 124 | <hr/> | ||
| 125 | </div> | ||
| 126 | <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> | ||
| 127 | <div itemprop="articleBody"> | ||
| 128 | |||
| 129 | <div class="section" id="glossary"> | ||
| 130 | <h1>Glossary<a class="headerlink" href="#glossary" title="Permalink to this headline">¶</a></h1> | ||
| 131 | <div class="section" id="d"> | ||
| 132 | <h2>D<a class="headerlink" href="#d" title="Permalink to this headline">¶</a></h2> | ||
| 133 | <p>device - The broker and anything that helps the broker (scheduler, jobmanager).</p> | ||
| 134 | </div> | ||
| 135 | </div> | ||
| 136 | |||
| 137 | |||
| 138 | </div> | ||
| 139 | </div> | ||
| 140 | <footer> | ||
| 141 | |||
| 142 | |||
| 143 | <hr/> | ||
| 144 | |||
| 145 | <div role="contentinfo"> | ||
| 146 | <p> | ||
| 147 | © Copyright 2015, eventboard.io. | ||
| 148 | |||
| 149 | </p> | ||
| 150 | </div> | ||
| 151 | 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>. | ||
| 152 | |||
| 153 | </footer> | ||
| 154 | |||
| 155 | </div> | ||
| 156 | </div> | ||
| 157 | |||
| 158 | </section> | ||
| 159 | |||
| 160 | </div> | ||
| 161 | |||
| 162 | |||
| 163 | |||
| 164 | |||
| 165 | |||
| 166 | <script type="text/javascript"> | ||
| 167 | var DOCUMENTATION_OPTIONS = { | ||
| 168 | URL_ROOT:'./', | ||
| 169 | VERSION:'0', | ||
| 170 | COLLAPSE_INDEX:false, | ||
| 171 | FILE_SUFFIX:'.html', | ||
| 172 | HAS_SOURCE: true | ||
| 173 | }; | ||
| 174 | </script> | ||
| 175 | <script type="text/javascript" src="_static/jquery.js"></script> | ||
| 176 | <script type="text/javascript" src="_static/underscore.js"></script> | ||
| 177 | <script type="text/javascript" src="_static/doctools.js"></script> | ||
| 178 | |||
| 179 | |||
| 180 | |||
| 181 | |||
| 182 | |||
| 183 | <script type="text/javascript" src="_static/js/theme.js"></script> | ||
| 184 | |||
| 185 | |||
| 186 | |||
| 187 | |||
| 188 | <script type="text/javascript"> | ||
| 189 | jQuery(function () { | ||
| 190 | SphinxRtdTheme.StickyNav.enable(); | ||
| 191 | }); | ||
| 192 | </script> | ||
| 193 | |||
| 194 | |||
| 195 | </body> | ||
| 196 | </html> \ No newline at end of file | ||
| @@ -143,7 +143,10 @@ | |||
| 143 | </ul> | 143 | </ul> |
| 144 | </li> | 144 | </li> |
| 145 | <li class="toctree-l1"><a class="reference internal" href="contributing.html">Contributing to EventMQ</a><ul> | 145 | <li class="toctree-l1"><a class="reference internal" href="contributing.html">Contributing to EventMQ</a><ul> |
| 146 | <li class="toctree-l2"><a class="reference internal" href="protocol.html">EventMQ Protocol Specification</a></li> | 146 | <li class="toctree-l2"><a class="reference internal" href="protocol.html">Goals</a></li> |
| 147 | <li class="toctree-l2"><a class="reference internal" href="protocol.html#license">License</a></li> | ||
| 148 | <li class="toctree-l2"><a class="reference internal" href="protocol.html#language">Language</a></li> | ||
| 149 | <li class="toctree-l2"><a class="reference internal" href="protocol.html#architecture">Architecture</a></li> | ||
| 147 | <li class="toctree-l2"><a class="reference external" href="https://github.com/enderlabs/eventmq">Source Code</a></li> | 150 | <li class="toctree-l2"><a class="reference external" href="https://github.com/enderlabs/eventmq">Source Code</a></li> |
| 148 | <li class="toctree-l2"><a class="reference external" href="https://github.com/enderlabs/eventmq/issues">Issues</a></li> | 151 | <li class="toctree-l2"><a class="reference external" href="https://github.com/enderlabs/eventmq/issues">Issues</a></li> |
| 149 | </ul> | 152 | </ul> |
diff --git a/jobmanager.html b/jobmanager.html index 638acd6..1553d9e 100644 --- a/jobmanager.html +++ b/jobmanager.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> – 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> – 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> – Exceptions</a></li> |
| 88 | <li class="toctree-l2 current"><a class="current reference internal" href=""><code class="docutils literal"><span class="pre">jobmanager</span></code> – Job Manager</a></li> | 89 | <li class="toctree-l2 current"><a class="current reference internal" href=""><code class="docutils literal"><span class="pre">jobmanager</span></code> – 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> – 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> – Poller</a></li> |
| @@ -167,10 +168,32 @@ generated.</td> | |||
| 167 | </table> | 168 | </table> |
| 168 | </dd></dl> | 169 | </dd></dl> |
| 169 | 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 | ||
| 175 | should always be at most <cite>available_workers</cite> count of active jobs. | ||
| 176 | this 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 | ||
| 183 | number changes as workers become busy with jobs</p> | ||
| 184 | </dd></dl> | ||
| 185 | |||
| 170 | <dl class="method"> | 186 | <dl class="method"> |
| 171 | <dt id="eventmq.jobmanager.JobManager.on_ack"> | 187 | <dt id="eventmq.jobmanager.JobManager.jobmanager_main"> |
| 172 | <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> | 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> |
| 173 | <dd><p>Sets <code class="xref py py-attr docutils literal"><span class="pre">awaiting_ack</span></code> to False</p> | 189 | <dd><p>Kick off jobmanager with logging and settings import</p> |
| 190 | </dd></dl> | ||
| 191 | |||
| 192 | <dl class="attribute"> | ||
| 193 | <dt id="eventmq.jobmanager.JobManager.name"> | ||
| 194 | <code class="descname">name</code><em class="property"> = None</em><a class="headerlink" href="#eventmq.jobmanager.JobManager.name" title="Permalink to this definition">¶</a></dt> | ||
| 195 | <dd><p>Define the name of this JobManager instance. Useful to know when | ||
| 196 | referring to the logs.</p> | ||
| 174 | </dd></dl> | 197 | </dd></dl> |
| 175 | 198 | ||
| 176 | <dl class="method"> | 199 | <dl class="method"> |
| @@ -213,31 +236,12 @@ HEARTBEAT</p> | |||
| 213 | </dl> | 236 | </dl> |
| 214 | </dd></dl> | 237 | </dd></dl> |
| 215 | 238 | ||
| 216 | <dl class="method"> | 239 | <dl class="attribute"> |
| 217 | <dt id="eventmq.jobmanager.JobManager.process_message"> | 240 | <dt id="eventmq.jobmanager.JobManager.outgoing"> |
| 218 | <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> | 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> |
| 219 | <dd><p>Processes a message</p> | 242 | <dd><p>JobManager starts out by INFORMing the router of it’s existance, |
| 220 | <table class="docutils field-list" frame="void" rules="none"> | 243 | then telling the router that it is READY. The reply will be the unit |
| 221 | <col class="field-name" /> | 244 | of work.</p> |
| 222 | <col class="field-body" /> | ||
| 223 | <tbody valign="top"> | ||
| 224 | <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>msg</strong> – The message received from the socket to parse and process. | ||
| 225 | Processing takes form of calling an <cite>on_COMMAND</cite> method.</td> | ||
| 226 | </tr> | ||
| 227 | </tbody> | ||
| 228 | </table> | ||
| 229 | </dd></dl> | ||
| 230 | |||
| 231 | <dl class="method"> | ||
| 232 | <dt id="eventmq.jobmanager.JobManager.reset"> | ||
| 233 | <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> | ||
| 234 | <dd><p>Resets the current connection by closing and reopening the socket</p> | ||
| 235 | </dd></dl> | ||
| 236 | |||
| 237 | <dl class="method"> | ||
| 238 | <dt id="eventmq.jobmanager.JobManager.send_inform"> | ||
| 239 | <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> | ||
| 240 | <dd><p>Send an INFORM command</p> | ||
| 241 | </dd></dl> | 245 | </dd></dl> |
| 242 | 246 | ||
| 243 | <dl class="method"> | 247 | <dl class="method"> |
| @@ -247,20 +251,6 @@ Processing takes form of calling an <cite>on_COMMAND</cite> method.</td> | |||
| 247 | for another REQUEST message.</p> | 251 | for another REQUEST message.</p> |
| 248 | </dd></dl> | 252 | </dd></dl> |
| 249 | 253 | ||
| 250 | <dl class="method"> | ||
| 251 | <dt id="eventmq.jobmanager.JobManager.start"> | ||
| 252 | <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> | ||
| 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>) – connection string to connect to</td> | ||
| 259 | </tr> | ||
| 260 | </tbody> | ||
| 261 | </table> | ||
| 262 | </dd></dl> | ||
| 263 | |||
| 264 | </dd></dl> | 254 | </dd></dl> |
| 265 | 255 | ||
| 266 | </div> | 256 | </div> |
diff --git a/objects.inv b/objects.inv index 40f65ba..5b59fb8 100644 --- a/objects.inv +++ b/objects.inv | |||
| Binary files differ | |||
diff --git a/protocol.html b/protocol.html index 1aff716..221bae0 100644 --- a/protocol.html +++ b/protocol.html | |||
| @@ -8,7 +8,7 @@ | |||
| 8 | 8 | ||
| 9 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> | 9 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 10 | 10 | ||
| 11 | <title>EventMQ Protocol Specification — EventMQ 0 documentation</title> | 11 | <title>Goals — EventMQ 0 documentation</title> |
| 12 | 12 | ||
| 13 | 13 | ||
| 14 | 14 | ||
| @@ -84,20 +84,18 @@ | |||
| 84 | <ul class="current"> | 84 | <ul class="current"> |
| 85 | <li class="toctree-l1"><a class="reference internal" href="api.html">API Documentation</a></li> | 85 | <li class="toctree-l1"><a class="reference internal" href="api.html">API Documentation</a></li> |
| 86 | <li class="toctree-l1 current"><a class="reference internal" href="contributing.html">Contributing to EventMQ</a><ul class="current"> | 86 | <li class="toctree-l1 current"><a class="reference internal" href="contributing.html">Contributing to EventMQ</a><ul class="current"> |
| 87 | <li class="toctree-l2 current"><a class="current reference internal" href="">EventMQ Protocol Specification</a><ul> | 87 | <li class="toctree-l2 current"><a class="current reference internal" href="">Goals</a></li> |
| 88 | <li class="toctree-l3"><a class="reference internal" href="#goals">Goals</a></li> | 88 | <li class="toctree-l2"><a class="reference internal" href="#license">License</a></li> |
| 89 | <li class="toctree-l3"><a class="reference internal" href="#license">License</a></li> | 89 | <li class="toctree-l2"><a class="reference internal" href="#language">Language</a></li> |
| 90 | <li class="toctree-l3"><a class="reference internal" href="#language">Language</a></li> | 90 | <li class="toctree-l2"><a class="reference internal" href="#architecture">Architecture</a><ul> |
| 91 | <li class="toctree-l3"><a class="reference internal" href="#architecture">Architecture</a><ul> | 91 | <li class="toctree-l3"><a class="reference internal" href="#topology">Topology</a></li> |
| 92 | <li class="toctree-l4"><a class="reference internal" href="#topology">Topology</a></li> | 92 | <li class="toctree-l3"><a class="reference internal" href="#router-addressing">ROUTER Addressing</a></li> |
| 93 | <li class="toctree-l4"><a class="reference internal" href="#router-addressing">ROUTER Addressing</a></li> | 93 | <li class="toctree-l3"><a class="reference internal" href="#global-frames">Global Frames</a></li> |
| 94 | <li class="toctree-l4"><a class="reference internal" href="#global-frames">Global Frames</a></li> | 94 | <li class="toctree-l3"><a class="reference internal" href="#emqp-client">eMQP / Client</a></li> |
| 95 | <li class="toctree-l4"><a class="reference internal" href="#emqp-client">eMQP / Client</a></li> | 95 | <li class="toctree-l3"><a class="reference internal" href="#emqp-scheduler">eMQP / Scheduler</a></li> |
| 96 | <li class="toctree-l4"><a class="reference internal" href="#emqp-worker">eMQP / Worker</a></li> | 96 | <li class="toctree-l3"><a class="reference internal" href="#emqp-worker">eMQP / Worker</a></li> |
| 97 | <li class="toctree-l4"><a class="reference internal" href="#heartbeating">Heartbeating</a></li> | 97 | <li class="toctree-l3"><a class="reference internal" href="#heartbeating">Heartbeating</a></li> |
| 98 | <li class="toctree-l4"><a class="reference internal" href="#request-headers">Request Headers</a></li> | 98 | <li class="toctree-l3"><a class="reference internal" href="#request-headers">REQUEST Headers</a></li> |
| 99 | </ul> | ||
| 100 | </li> | ||
| 101 | </ul> | 99 | </ul> |
| 102 | </li> | 100 | </li> |
| 103 | <li class="toctree-l2"><a class="reference external" href="https://github.com/enderlabs/eventmq">Source Code</a></li> | 101 | <li class="toctree-l2"><a class="reference external" href="https://github.com/enderlabs/eventmq">Source Code</a></li> |
| @@ -136,7 +134,7 @@ | |||
| 136 | 134 | ||
| 137 | <li><a href="contributing.html">Contributing to EventMQ</a> »</li> | 135 | <li><a href="contributing.html">Contributing to EventMQ</a> »</li> |
| 138 | 136 | ||
| 139 | <li>EventMQ Protocol Specification</li> | 137 | <li>Goals</li> |
| 140 | <li class="wy-breadcrumbs-aside"> | 138 | <li class="wy-breadcrumbs-aside"> |
| 141 | 139 | ||
| 142 | 140 | ||
| @@ -150,11 +148,12 @@ | |||
| 150 | <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> | 148 | <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> |
| 151 | <div itemprop="articleBody"> | 149 | <div itemprop="articleBody"> |
| 152 | 150 | ||
| 153 | <div class="section" id="eventmq-protocol-specification"> | 151 | <p>/<strong>**************************e |
| 154 | <h1>EventMQ Protocol Specification<a class="headerlink" href="#eventmq-protocol-specification" title="Permalink to this headline">¶</a></h1> | 152 | EventMQ Protocol Specification |
| 155 | <p><em>The status of this document is alpha and subject to heavy change</em></p> | 153 | ****************************</strong> |
| 154 | <em>The status of this document is alpha and subject to heavy change</em></p> | ||
| 156 | <div class="section" id="goals"> | 155 | <div class="section" id="goals"> |
| 157 | <h2>Goals<a class="headerlink" href="#goals" title="Permalink to this headline">¶</a></h2> | 156 | <h1>Goals<a class="headerlink" href="#goals" title="Permalink to this headline">¶</a></h1> |
| 158 | <p>The EventMQ Protocol (eMQP) defines a reliable service-oriented request-reply and pub-sub dialog between a set of clients, a broker, and a set of workers. This goal is to</p> | 157 | <p>The EventMQ Protocol (eMQP) defines a reliable service-oriented request-reply and pub-sub dialog between a set of clients, a broker, and a set of workers. This goal is to</p> |
| 159 | <p>The goals are to:</p> | 158 | <p>The goals are to:</p> |
| 160 | <blockquote> | 159 | <blockquote> |
| @@ -167,32 +166,32 @@ | |||
| 167 | </div></blockquote> | 166 | </div></blockquote> |
| 168 | </div> | 167 | </div> |
| 169 | <div class="section" id="license"> | 168 | <div class="section" id="license"> |
| 170 | <h2>License<a class="headerlink" href="#license" title="Permalink to this headline">¶</a></h2> | 169 | <h1>License<a class="headerlink" href="#license" title="Permalink to this headline">¶</a></h1> |
| 171 | <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 General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.</p> |
| 172 | <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 General Public License for more details.</p> |
| 173 | </div> | 172 | </div> |
| 174 | <div class="section" id="language"> | 173 | <div class="section" id="language"> |
| 175 | <h2>Language<a class="headerlink" href="#language" title="Permalink to this headline">¶</a></h2> | 174 | <h1>Language<a class="headerlink" href="#language" title="Permalink to this headline">¶</a></h1> |
| 176 | <p>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in RFC 2119[[1](<a class="reference external" href="http://tools.ietf.org/html/rfc2119">http://tools.ietf.org/html/rfc2119</a>)].</p> | 175 | <p>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in RFC 2119[[1](<a class="reference external" href="http://tools.ietf.org/html/rfc2119">http://tools.ietf.org/html/rfc2119</a>)].</p> |
| 177 | </div> | 176 | </div> |
| 178 | <div class="section" id="architecture"> | 177 | <div class="section" id="architecture"> |
| 179 | <h2>Architecture<a class="headerlink" href="#architecture" title="Permalink to this headline">¶</a></h2> | 178 | <h1>Architecture<a class="headerlink" href="#architecture" title="Permalink to this headline">¶</a></h1> |
| 180 | <p>insert pretty picture here</p> | 179 | <p>insert pretty picture here</p> |
| 181 | <div class="section" id="topology"> | 180 | <div class="section" id="topology"> |
| 182 | <h3>Topology<a class="headerlink" href="#topology" title="Permalink to this headline">¶</a></h3> | 181 | <h2>Topology<a class="headerlink" href="#topology" title="Permalink to this headline">¶</a></h2> |
| 183 | <p>eMQP connects a set of client applications (e.g. web servers), a broker, and a pool of workers. Clients connect to the broker as well as the workers.</p> | 182 | <p>eMQP connects a set of client applications (e.g. web servers), a broker, and a pool of workers. Clients connect to the broker as well as the workers.</p> |
| 184 | <p>‘Clients’ is defined as application issuing requests and ‘workers’ as applications that process these requests. (Workers consist of a <cite>JobManager</cite> and a pool of <cite>Worker</cite> resources where the job executes.)</p> | 183 | <p>‘Clients’ is defined as application issuing requests and ‘workers’ as applications that process these requests. (Workers consist of a <cite>JobManager</cite> and a pool of <cite>Worker</cite> resources where the job executes.)</p> |
| 185 | <p>The EventMQ broker handles a set of named queues. The broker SHOULD serve clients on a fair request and MAY deliver requests to workers on any basis, including 0MQ’s built-in round robin or least-recently used.</p> | 184 | <p>The EventMQ broker handles a set of named queues. The broker SHOULD serve clients on a fair request and MAY deliver requests to workers on any basis, including 0MQ’s built-in round robin or least-recently used.</p> |
| 186 | </div> | 185 | </div> |
| 187 | <div class="section" id="router-addressing"> | 186 | <div class="section" id="router-addressing"> |
| 188 | <h3>ROUTER Addressing<a class="headerlink" href="#router-addressing" title="Permalink to this headline">¶</a></h3> | 187 | <h2>ROUTER Addressing<a class="headerlink" href="#router-addressing" title="Permalink to this headline">¶</a></h2> |
| 189 | <p>In the case of request-reply, the broker MUST use a ROUTER socket to accept requests from both clients and workers. The broker MAY use a seperate socket implementing a subset of eMQP, or MAY use a single socket implementing all of eMQP.</p> | 188 | <p>In the case of request-reply, the broker MUST use a ROUTER socket to accept requests from both clients and workers. The broker MAY use a seperate socket implementing a subset of eMQP, or MAY use a single socket implementing all of eMQP.</p> |
| 190 | <p>From the 0MQ manual[[2](<a class="reference external" href="http://api.zeromq.org/master:zmq-socket">http://api.zeromq.org/master:zmq-socket</a>)] | 189 | <p>From the 0MQ manual[[2](<a class="reference external" href="http://api.zeromq.org/master:zmq-socket">http://api.zeromq.org/master:zmq-socket</a>)] |
| 191 | > When receiving messages a ROUTER socket shall prepend a message part containing the identity of the originating peer to the message before passing it to the application. When sending messages a ROUTER socket shall remove the first part of the message and use it to determine the identity of the peer the message shall be routed to.</p> | 190 | > When receiving messages a ROUTER socket shall prepend a message part containing the identity of the originating peer to the message before passing it to the application. When sending messages a ROUTER socket shall remove the first part of the message and use it to determine the identity of the peer the message shall be routed to.</p> |
| 192 | <p>This extra frame is not shown in the specifications below.</p> | 191 | <p>This extra frame is not shown in the specifications below.</p> |
| 193 | </div> | 192 | </div> |
| 194 | <div class="section" id="global-frames"> | 193 | <div class="section" id="global-frames"> |
| 195 | <h3>Global Frames<a class="headerlink" href="#global-frames" title="Permalink to this headline">¶</a></h3> | 194 | <h2>Global Frames<a class="headerlink" href="#global-frames" title="Permalink to this headline">¶</a></h2> |
| 196 | <p>An <strong>ACK</strong> command consists of a 4-frame multipart message, formatted as follows.</p> | 195 | <p>An <strong>ACK</strong> command consists of a 4-frame multipart message, formatted as follows.</p> |
| 197 | <table border="1" class="docutils"> | 196 | <table border="1" class="docutils"> |
| 198 | <colgroup> | 197 | <colgroup> |
| @@ -231,7 +230,7 @@ | |||
| 231 | </table> | 230 | </table> |
| 232 | </div> | 231 | </div> |
| 233 | <div class="section" id="emqp-client"> | 232 | <div class="section" id="emqp-client"> |
| 234 | <h3>eMQP / Client<a class="headerlink" href="#emqp-client" title="Permalink to this headline">¶</a></h3> | 233 | <h2>eMQP / Client<a class="headerlink" href="#emqp-client" title="Permalink to this headline">¶</a></h2> |
| 235 | <p>A <strong>REQUEST</strong> command consists of a 7-frame multipart message, formatted as follows.</p> | 234 | <p>A <strong>REQUEST</strong> command consists of a 7-frame multipart message, formatted as follows.</p> |
| 236 | <table border="1" class="docutils"> | 235 | <table border="1" class="docutils"> |
| 237 | <colgroup> | 236 | <colgroup> |
| @@ -312,7 +311,7 @@ | |||
| 312 | </tr> | 311 | </tr> |
| 313 | <tr class="row-odd"><td>5</td> | 312 | <tr class="row-odd"><td>5</td> |
| 314 | <td>_HEADERS_</td> | 313 | <td>_HEADERS_</td> |
| 315 | <td>dictionary of headers. can be an empty set</td> | 314 | <td>csv list of headers</td> |
| 316 | </tr> | 315 | </tr> |
| 317 | <tr class="row-even"><td>6</td> | 316 | <tr class="row-even"><td>6</td> |
| 318 | <td>_MSG_</td> | 317 | <td>_MSG_</td> |
| @@ -320,9 +319,140 @@ | |||
| 320 | </tr> | 319 | </tr> |
| 321 | </tbody> | 320 | </tbody> |
| 322 | </table> | 321 | </table> |
| 322 | <p>A <strong>SCHEDULE</strong> command consists of a 7-frame multipart message, formatted as follows.</p> | ||
| 323 | <table border="1" class="docutils"> | ||
| 324 | <colgroup> | ||
| 325 | <col width="10%" /> | ||
| 326 | <col width="23%" /> | ||
| 327 | <col width="67%" /> | ||
| 328 | </colgroup> | ||
| 329 | <thead valign="bottom"> | ||
| 330 | <tr class="row-odd"><th class="head">FRAME</th> | ||
| 331 | <th class="head">Value</th> | ||
| 332 | <th class="head">Description</th> | ||
| 333 | </tr> | ||
| 334 | </thead> | ||
| 335 | <tbody valign="top"> | ||
| 336 | <tr class="row-even"><td>0</td> | ||
| 337 | <td>_EMPTY_</td> | ||
| 338 | <td>leave empty</td> | ||
| 339 | </tr> | ||
| 340 | <tr class="row-odd"><td>1</td> | ||
| 341 | <td>eMQP/1.0</td> | ||
| 342 | <td>Protocol version</td> | ||
| 343 | </tr> | ||
| 344 | <tr class="row-even"><td>2</td> | ||
| 345 | <td>SCHEDULE</td> | ||
| 346 | <td>command</td> | ||
| 347 | </tr> | ||
| 348 | <tr class="row-odd"><td>3</td> | ||
| 349 | <td>_MSGID_</td> | ||
| 350 | <td>A unique id for the msg</td> | ||
| 351 | </tr> | ||
| 352 | <tr class="row-even"><td>4</td> | ||
| 353 | <td>_TOPIC_NAME_</td> | ||
| 354 | <td>name of queue that the job should run in</td> | ||
| 355 | </tr> | ||
| 356 | <tr class="row-odd"><td>5</td> | ||
| 357 | <td>_HEADERS_</td> | ||
| 358 | <td>csv list of headers for this message</td> | ||
| 359 | </tr> | ||
| 360 | <tr class="row-even"><td>6</td> | ||
| 361 | <td>_MSG_</td> | ||
| 362 | <td>The message to send</td> | ||
| 363 | </tr> | ||
| 364 | </tbody> | ||
| 365 | </table> | ||
| 366 | <p>An <strong>UNSCHEDULE</strong> command consists of a 7-frame multipart message, formatted as follows.</p> | ||
| 367 | <table border="1" class="docutils"> | ||
| 368 | <colgroup> | ||
| 369 | <col width="8%" /> | ||
| 370 | <col width="20%" /> | ||
| 371 | <col width="72%" /> | ||
| 372 | </colgroup> | ||
| 373 | <thead valign="bottom"> | ||
| 374 | <tr class="row-odd"><th class="head">FRAME</th> | ||
| 375 | <th class="head">Value</th> | ||
| 376 | <th class="head">Description</th> | ||
| 377 | </tr> | ||
| 378 | </thead> | ||
| 379 | <tbody valign="top"> | ||
| 380 | <tr class="row-even"><td>0</td> | ||
| 381 | <td>_EMPTY_</td> | ||
| 382 | <td>leave empty</td> | ||
| 383 | </tr> | ||
| 384 | <tr class="row-odd"><td>1</td> | ||
| 385 | <td>eMQP/1.0</td> | ||
| 386 | <td>Protocol version</td> | ||
| 387 | </tr> | ||
| 388 | <tr class="row-even"><td>2</td> | ||
| 389 | <td>UNSCHEDULE</td> | ||
| 390 | <td>command</td> | ||
| 391 | </tr> | ||
| 392 | <tr class="row-odd"><td>3</td> | ||
| 393 | <td>_MSGID_</td> | ||
| 394 | <td>A unique id for the msg</td> | ||
| 395 | </tr> | ||
| 396 | <tr class="row-even"><td>4</td> | ||
| 397 | <td>_TOPIC_NAME_</td> | ||
| 398 | <td>ignored for this command, broadcasted to all queues</td> | ||
| 399 | </tr> | ||
| 400 | <tr class="row-odd"><td>5</td> | ||
| 401 | <td>_HEADERS_</td> | ||
| 402 | <td>csv list of headers for this message</td> | ||
| 403 | </tr> | ||
| 404 | <tr class="row-even"><td>6</td> | ||
| 405 | <td>_MSG_</td> | ||
| 406 | <td>The message to send</td> | ||
| 407 | </tr> | ||
| 408 | </tbody> | ||
| 409 | </table> | ||
| 410 | </div> | ||
| 411 | <div class="section" id="emqp-scheduler"> | ||
| 412 | <h2>eMQP / Scheduler<a class="headerlink" href="#emqp-scheduler" title="Permalink to this headline">¶</a></h2> | ||
| 413 | <p>An <strong>INFORM</strong> command consists of a 6-frame multipart message, formatted as follows.</p> | ||
| 414 | <table border="1" class="docutils"> | ||
| 415 | <colgroup> | ||
| 416 | <col width="9%" /> | ||
| 417 | <col width="20%" /> | ||
| 418 | <col width="71%" /> | ||
| 419 | </colgroup> | ||
| 420 | <thead valign="bottom"> | ||
| 421 | <tr class="row-odd"><th class="head">FRAME</th> | ||
| 422 | <th class="head">Value</th> | ||
| 423 | <th class="head">Description</th> | ||
| 424 | </tr> | ||
| 425 | </thead> | ||
| 426 | <tbody valign="top"> | ||
| 427 | <tr class="row-even"><td>0</td> | ||
| 428 | <td>_EMPTY_</td> | ||
| 429 | <td>leave empty</td> | ||
| 430 | </tr> | ||
| 431 | <tr class="row-odd"><td>1</td> | ||
| 432 | <td>eMQP/1.0</td> | ||
| 433 | <td>Protocol version</td> | ||
| 434 | </tr> | ||
| 435 | <tr class="row-even"><td>2</td> | ||
| 436 | <td>INFORM</td> | ||
| 437 | <td>command</td> | ||
| 438 | </tr> | ||
| 439 | <tr class="row-odd"><td>3</td> | ||
| 440 | <td>_MSGID_</td> | ||
| 441 | <td>A unique id for the msg</td> | ||
| 442 | </tr> | ||
| 443 | <tr class="row-even"><td>4</td> | ||
| 444 | <td>_QUEUE_NAME_</td> | ||
| 445 | <td>csv seperated names of queue the worker belongs to</td> | ||
| 446 | </tr> | ||
| 447 | <tr class="row-odd"><td>5</td> | ||
| 448 | <td>scheduler</td> | ||
| 449 | <td>type of peer connecting</td> | ||
| 450 | </tr> | ||
| 451 | </tbody> | ||
| 452 | </table> | ||
| 323 | </div> | 453 | </div> |
| 324 | <div class="section" id="emqp-worker"> | 454 | <div class="section" id="emqp-worker"> |
| 325 | <h3>eMQP / Worker<a class="headerlink" href="#emqp-worker" title="Permalink to this headline">¶</a></h3> | 455 | <h2>eMQP / Worker<a class="headerlink" href="#emqp-worker" title="Permalink to this headline">¶</a></h2> |
| 326 | <p>An <strong>INFORM</strong> command consists of a 5-frame multipart message, formatted as follows.</p> | 456 | <p>An <strong>INFORM</strong> command consists of a 5-frame multipart message, formatted as follows.</p> |
| 327 | <table border="1" class="docutils"> | 457 | <table border="1" class="docutils"> |
| 328 | <colgroup> | 458 | <colgroup> |
| @@ -357,6 +487,10 @@ | |||
| 357 | <td>_QUEUE_NAME_</td> | 487 | <td>_QUEUE_NAME_</td> |
| 358 | <td>csv seperated names of queue the worker belongs to</td> | 488 | <td>csv seperated names of queue the worker belongs to</td> |
| 359 | </tr> | 489 | </tr> |
| 490 | <tr class="row-odd"><td>5</td> | ||
| 491 | <td>worker</td> | ||
| 492 | <td>type of peer connecting</td> | ||
| 493 | </tr> | ||
| 360 | </tbody> | 494 | </tbody> |
| 361 | </table> | 495 | </table> |
| 362 | <p>A <strong>READY</strong> frame consists of a 4-frame multipart message, formatted as follows.</p> | 496 | <p>A <strong>READY</strong> frame consists of a 4-frame multipart message, formatted as follows.</p> |
| @@ -497,20 +631,23 @@ | |||
| 497 | </table> | 631 | </table> |
| 498 | </div> | 632 | </div> |
| 499 | <div class="section" id="heartbeating"> | 633 | <div class="section" id="heartbeating"> |
| 500 | <h3>Heartbeating<a class="headerlink" href="#heartbeating" title="Permalink to this headline">¶</a></h3> | 634 | <h2>Heartbeating<a class="headerlink" href="#heartbeating" title="Permalink to this headline">¶</a></h2> |
| 501 | <blockquote> | 635 | <blockquote> |
| 502 | <div><ul class="simple"> | 636 | <div><ul class="simple"> |
| 503 | <li>HEARTBEAT commands are valid at any time after an INFORM command</li> | 637 | <li>HEARTBEAT commands are valid at any time after an INFORM command</li> |
| 504 | <li>Any command except DISCONNECT act as a heartbeat. Peers SHOULD NOT send HEARTBEAT commands while sending other commands.</li> | 638 | <li>Any command except DISCONNECT act as a heartbeat. Peers SHOULD NOT send HEARTBEAT commands while sending other commands.</li> |
| 505 | <li>Both worker and broker MUST send heartbeats at regular and agreed-upon intervals.</li> | 639 | <li>Worker and broker MUST send heartbeats at regular and agreed-upon intervals.</li> |
| 640 | <li>Scheduler and broker MUST send heartbeats at regular and agreed-upon intervals.</li> | ||
| 506 | <li>If the worker detects that the broker disconnected it SHOULD restart the conversation.</li> | 641 | <li>If the worker detects that the broker disconnected it SHOULD restart the conversation.</li> |
| 507 | <li>If the broker detects that a worker has disconnected it should stop sending it a message of any type.</li> | 642 | <li>If the broker detects that a worker has disconnected it should stop sending it a message of any type.</li> |
| 643 | <li>If the scheduler detects that the broker disconnects it SHOULD restart the conversation.</li> | ||
| 644 | <li>If the broker detects that a scheduler has disconnected it should ??????????.</li> | ||
| 508 | </ul> | 645 | </ul> |
| 509 | </div></blockquote> | 646 | </div></blockquote> |
| 510 | </div> | 647 | </div> |
| 511 | <div class="section" id="request-headers"> | 648 | <div class="section" id="request-headers"> |
| 512 | <h3>Request Headers<a class="headerlink" href="#request-headers" title="Permalink to this headline">¶</a></h3> | 649 | <h2>REQUEST Headers<a class="headerlink" href="#request-headers" title="Permalink to this headline">¶</a></h2> |
| 513 | <p>Headers MUST be 0 to many comma seperated values inserted into the header field. If there are no headers requried, send an empty string MUST be sent where headers are required.</p> | 650 | <p>Headers MUST be 0 to many comma seperated values inserted into the header field. If there are no headers required, send an empty string MUST be sent where headers are required.</p> |
| 514 | <p>Below is a table which defines and describes the headers.</p> | 651 | <p>Below is a table which defines and describes the headers.</p> |
| 515 | <table border="1" class="docutils"> | 652 | <table border="1" class="docutils"> |
| 516 | <colgroup> | 653 | <colgroup> |
| @@ -551,7 +688,6 @@ | |||
| 551 | </table> | 688 | </table> |
| 552 | </div> | 689 | </div> |
| 553 | </div> | 690 | </div> |
| 554 | </div> | ||
| 555 | 691 | ||
| 556 | 692 | ||
| 557 | </div> | 693 | </div> |
diff --git a/receiver.html b/receiver.html index 2f53114..c72aa28 100644 --- a/receiver.html +++ b/receiver.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> – 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> – 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> – 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> – 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> – 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> – 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> – Poller</a></li> |
| @@ -242,6 +243,22 @@ False</td> | |||
| 242 | </table> | 243 | </table> |
| 243 | </dd></dl> | 244 | </dd></dl> |
| 244 | 245 | ||
| 246 | <dl class="method"> | ||
| 247 | <dt id="eventmq.receiver.Receiver.unbind"> | ||
| 248 | <code class="descname">unbind</code><span class="sig-paren">(</span><em>addr</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.receiver.Receiver.unbind" title="Permalink to this definition">¶</a></dt> | ||
| 249 | <dd><p>Unbinds current socket</p> | ||
| 250 | <table class="docutils field-list" frame="void" rules="none"> | ||
| 251 | <col class="field-name" /> | ||
| 252 | <col class="field-body" /> | ||
| 253 | <tbody valign="top"> | ||
| 254 | <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>) – Address to disconnect from as a string</td> | ||
| 255 | </tr> | ||
| 256 | <tr class="field-even field"><th class="field-name">Raises:</th><td class="field-body"><code class="xref py py-class docutils literal"><span class="pre">Exception</span></code></td> | ||
| 257 | </tr> | ||
| 258 | </tbody> | ||
| 259 | </table> | ||
| 260 | </dd></dl> | ||
| 261 | |||
| 245 | </dd></dl> | 262 | </dd></dl> |
| 246 | 263 | ||
| 247 | </div> | 264 | </div> |
diff --git a/router.html b/router.html index 1cacb79..0604f89 100644 --- a/router.html +++ b/router.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> – 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> – 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> – 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> – 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> – 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> – 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> – Poller</a></li> |
| @@ -148,6 +149,20 @@ | |||
| 148 | <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> |
| 149 | <dd><p>A simple router of messages</p> | 150 | <dd><p>A simple router of messages</p> |
| 150 | <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>) – unique id of the scheduler to add</td> | ||
| 160 | </tr> | ||
| 161 | </tbody> | ||
| 162 | </table> | ||
| 163 | </dd></dl> | ||
| 164 | |||
| 165 | <dl class="method"> | ||
| 151 | <dt id="eventmq.router.Router.add_worker"> | 166 | <dt id="eventmq.router.Router.add_worker"> |
| 152 | <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> |
| 153 | <dd><p>Adds a worker to worker queues</p> | 168 | <dd><p>Adds a worker to worker queues</p> |
| @@ -156,7 +171,7 @@ | |||
| 156 | <col class="field-body" /> | 171 | <col class="field-body" /> |
| 157 | <tbody valign="top"> | 172 | <tbody valign="top"> |
| 158 | <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"> |
| 159 | <li><strong>worker_id</strong> – 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>) – unique id of the worker to add</li> |
| 160 | <li><strong>queues</strong> – queue or queues this worker should be a member of</li> | 175 | <li><strong>queues</strong> – queue or queues this worker should be a member of</li> |
| 161 | </ul> | 176 | </ul> |
| 162 | </td> | 177 | </td> |
| @@ -166,6 +181,13 @@ | |||
| 166 | </dd></dl> | 181 | </dd></dl> |
| 167 | 182 | ||
| 168 | <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 | ||
| 187 | the router hasn’t received a heartbeat in HEARTBEAT_TIMEOUT</p> | ||
| 188 | </dd></dl> | ||
| 189 | |||
| 190 | <dl class="method"> | ||
| 169 | <dt id="eventmq.router.Router.clean_up_dead_workers"> | 191 | <dt id="eventmq.router.Router.clean_up_dead_workers"> |
| 170 | <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> |
| 171 | <dd><p>Loops through the worker queues and removes any workers who haven’t | 193 | <dd><p>Loops through the worker queues and removes any workers who haven’t |
| @@ -209,10 +231,7 @@ and announces itself.</p> | |||
| 209 | <dl class="method"> | 231 | <dl class="method"> |
| 210 | <dt id="eventmq.router.Router.on_receive_request"> | 232 | <dt id="eventmq.router.Router.on_receive_request"> |
| 211 | <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> | 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 | <dd><p>This function is called when a message comes in from the client socket. | 234 | <dd><table class="docutils field-list" frame="void" rules="none"> |
| 213 | It then calls <cite>on_command</cite>. If <cite>on_command</cite> isn’t found, then a | ||
| 214 | warning is created.</p> | ||
| 215 | <table class="docutils field-list" frame="void" rules="none"> | ||
| 216 | <col class="field-name" /> | 235 | <col class="field-name" /> |
| 217 | <col class="field-body" /> | 236 | <col class="field-body" /> |
| 218 | <tbody valign="top"> | 237 | <tbody valign="top"> |
| @@ -239,9 +258,70 @@ a warning is created.</p> | |||
| 239 | </dd></dl> | 258 | </dd></dl> |
| 240 | 259 | ||
| 241 | <dl class="method"> | 260 | <dl class="method"> |
| 261 | <dt id="eventmq.router.Router.queue_message"> | ||
| 262 | <code class="descname">queue_message</code><span class="sig-paren">(</span><em>msg</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.queue_message" title="Permalink to this definition">¶</a></dt> | ||
| 263 | <dd><p>Add a message to the queue for processing later</p> | ||
| 264 | </dd></dl> | ||
| 265 | |||
| 266 | <dl class="attribute"> | ||
| 267 | <dt id="eventmq.router.Router.queues"> | ||
| 268 | <code class="descname">queues</code><em class="property"> = None</em><a class="headerlink" href="#eventmq.router.Router.queues" title="Permalink to this definition">¶</a></dt> | ||
| 269 | <dd><p>JobManager address by queue name. The lists here are Last Recently | ||
| 270 | Used queues where a worker is popped off when given a job, and | ||
| 271 | appeneded when one finishes. There is one entry per available | ||
| 272 | worker slot, so you may see duplicate addresses.</p> | ||
| 273 | <p class="rubric">Example</p> | ||
| 274 | <p>{‘default’: [‘w1’, ‘w2’, ‘w1’, ‘w4’]}</p> | ||
| 275 | </dd></dl> | ||
| 276 | |||
| 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"> | ||
| 242 | <dt id="eventmq.router.Router.requeue_worker"> | 284 | <dt id="eventmq.router.Router.requeue_worker"> |
| 243 | <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> | 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> |
| 244 | <dd><p>Add a worker back to the queue pool</p> | 286 | <dd><p>Add a worker back to the pools for which it is a member of.</p> |
| 287 | <div class="admonition note"> | ||
| 288 | <p class="first admonition-title">Note</p> | ||
| 289 | <p class="last">This will (correctly) add duplicate items into the queues.</p> | ||
| 290 | </div> | ||
| 291 | </dd></dl> | ||
| 292 | |||
| 293 | <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"> | ||
| 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> | ||
| 302 | <dd><p>Kick off router with logging and settings import</p> | ||
| 303 | </dd></dl> | ||
| 304 | |||
| 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 | ||
| 315 | need to be routed to a scheduler, which will keep track of time and | ||
| 316 | run the job. | ||
| 317 | Contains dictionaries:</p> | ||
| 318 | <blockquote> | ||
| 319 | <div><dl class="docutils"> | ||
| 320 | <dt>self.schedulers[<scheduler_zmq_id>] = {</dt> | ||
| 321 | <dd>‘hb’: <last_recv_heartbeat>,</dd> | ||
| 322 | </dl> | ||
| 323 | <p>}</p> | ||
| 324 | </div></blockquote> | ||
| 245 | </dd></dl> | 325 | </dd></dl> |
| 246 | 326 | ||
| 247 | <dl class="method"> | 327 | <dl class="method"> |
| @@ -283,14 +363,20 @@ needed when building messages</p> | |||
| 283 | </dd></dl> | 363 | </dd></dl> |
| 284 | 364 | ||
| 285 | <dl class="method"> | 365 | <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"> | ||
| 286 | <dt id="eventmq.router.Router.send_workers_heartbeats"> | 372 | <dt id="eventmq.router.Router.send_workers_heartbeats"> |
| 287 | <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> | 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> |
| 288 | <dd><p>Send heartbeats to all registered workers.</p> | 374 | <dd><p>Send HEARTBEATs to all registered workers.</p> |
| 289 | </dd></dl> | 375 | </dd></dl> |
| 290 | 376 | ||
| 291 | <dl class="method"> | 377 | <dl class="method"> |
| 292 | <dt id="eventmq.router.Router.start"> | 378 | <dt id="eventmq.router.Router.start"> |
| 293 | <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> | 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> |
| 294 | <dd><p>Begin listening for connections on the provided connection strings</p> | 380 | <dd><p>Begin listening for connections on the provided connection strings</p> |
| 295 | <table class="docutils field-list" frame="void" rules="none"> | 381 | <table class="docutils field-list" frame="void" rules="none"> |
| 296 | <col class="field-name" /> | 382 | <col class="field-name" /> |
| @@ -306,6 +392,29 @@ needed when building messages</p> | |||
| 306 | </table> | 392 | </table> |
| 307 | </dd></dl> | 393 | </dd></dl> |
| 308 | 394 | ||
| 395 | <dl class="attribute"> | ||
| 396 | <dt id="eventmq.router.Router.waiting_messages"> | ||
| 397 | <code class="descname">waiting_messages</code><em class="property"> = None</em><a class="headerlink" href="#eventmq.router.Router.waiting_messages" title="Permalink to this definition">¶</a></dt> | ||
| 398 | <dd><p>Message buffer. When messages can’t be sent because there are no | ||
| 399 | workers available to take the job</p> | ||
| 400 | </dd></dl> | ||
| 401 | |||
| 402 | <dl class="attribute"> | ||
| 403 | <dt id="eventmq.router.Router.workers"> | ||
| 404 | <code class="descname">workers</code><em class="property"> = None</em><a class="headerlink" href="#eventmq.router.Router.workers" title="Permalink to this definition">¶</a></dt> | ||
| 405 | <dd><p>List of queues by workers. Meta data about the worker such as the | ||
| 406 | queue memebership and timestamp of last message received are stored | ||
| 407 | here.</p> | ||
| 408 | <dl class="docutils"> | ||
| 409 | <dt><strong>Keys</strong></dt> | ||
| 410 | <dd><ul class="first last simple"> | ||
| 411 | <li>queues: list() of queues the worker belongs to</li> | ||
| 412 | <li>hb: monotonic timestamp of the last received message from worker</li> | ||
| 413 | </ul> | ||
| 414 | </dd> | ||
| 415 | </dl> | ||
| 416 | </dd></dl> | ||
| 417 | |||
| 309 | </dd></dl> | 418 | </dd></dl> |
| 310 | 419 | ||
| 311 | </div> | 420 | </div> |
diff --git a/searchindex.js b/searchindex.js index e3d491a..7e31518 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","style","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,""],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,""],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,""],requeue_worker:[10,3,1,""],send_ack:[10,3,1,""],send_heartbeat:[10,3,1,""],send_workers_heartbeats:[10,3,1,""],start:[10,3,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,""],zcontext:[11,1,1,""],zsocket:[11,1,1,""]},"eventmq.utils":{classes:[14,0,0,"-"],messages:[15,0,0,"-"],random_characters:[13,2,1,""],timeutils:[16,0,0,"-"]},"eventmq.utils.classes":{HeartbeatMixin:[14,4,1,""],ZMQReceiveMixin:[14,4,1,""],ZMQSendMixin:[14,4,1,""]},"eventmq.utils.classes.HeartbeatMixin":{"__init__":[14,3,1,""],"__weakref__":[14,1,1,""],is_dead:[14,3,1,""],reset_heartbeat_counters:[14,3,1,""],send_heartbeat:[14,3,1,""]},"eventmq.utils.classes.ZMQReceiveMixin":{"__weakref__":[14,1,1,""],recv:[14,3,1,""],recv_multipart:[14,3,1,""]},"eventmq.utils.classes.ZMQSendMixin":{"__weakref__":[14,1,1,""],send:[14,3,1,""],send_multipart:[14,3,1,""]},"eventmq.utils.messages":{fwd_emqp_router_message:[15,2,1,""],generate_msgid:[15,2,1,""],parse_message:[15,2,1,""],parse_router_message:[15,2,1,""],send_emqp_message:[15,2,1,""],send_emqp_router_message:[15,2,1,""]},"eventmq.utils.timeutils":{monotonic:[16,2,1,""],seconds_until:[16,2,1,""],timestamp:[16,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:[13,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,14],"__init__":[6,7,9,11,14],"__weakref__":14,"_empty_":8,"_headers_":8,"_issu":[],"_msg_":8,"_msgid_":8,"_queue_name_":8,"_recipient_id":14,"_sourc":[],"_topic_name_":8,"_unix_ts_":8,"abstract":8,"case":[8,16],"class":[],"default":[2,6,8,9,11],"float":[14,16],"function":[2,10],"import":[2,3],"int":[2,7],"long":7,"new":10,"public":8,"return":[2,3,7,9,11,13,14,15,16],"true":[2,8,9,11,14],"while":8,about:[6,8,10],absolut:3,accept:8,account:[10,15],ack:[8,10],ackd_msgid:6,acknowledg:[8,10],act:[1,8],actual:[6,10],add:10,add_work:10,addr:[6,9,11],address:[],after:8,agre:8,all:[2,4,6,8,9,10,11,14],allow:8,alon:2,alpha:8,alreadi:10,alwai:2,and_data:15,ani:[2,8,10],announc:10,anoth:[6,10],api:[],appear:7,applic:[2,8],architectur:[],aren:[],arg2:2,arg3:2,arg:[2,6,7,9,10,11,14],arithmet:16,around:[],attempt:4,attr:7,automat:14,avail:[],awaiting_ack:6,back:[8,10,14],backend_addr:10,base:[4,7],basi:8,becaus:10,been:[2,14],befor:[2,7,8],begin:[6,10],belong:8,below:8,best:2,between:8,block:2,bool:[2,9,11,14],boot:16,both:[7,8],box:2,broker:8,build:[2,10,11],build_module_path:2,built:8,bulid:9,calcul:16,call:[6,7,10],callabl:[2,6,9],can:[1,2,8,15],chang:8,charact:13,check:[2,9,11,14],class_arg:[2,6],class_kwarg:[2,6],clean_up_dead_work:10,client:[],close:[6,16],code:[3,5],colon:2,column:12,com:[],come:[2,10],comma:8,command:[2,6,8,10,14,15],complet:8,compon:8,configur:2,connction:[9,11],connect:[6,8,9,10,11,14,15],consist:8,contact:4,contain:[1,8,13],content:[],context:[9,11],convers:8,convienc:[7,14],count:[6,8,10,16],counter:14,cpu:2,creat:[10,11,13],cross:12,csv:8,current:6,custom:10,data:15,deal:13,dealer:11,death:14,debug:8,decor:2,decrypt:2,def:[],defeat:8,defer:2,defer_job:2,defin:[8,9,11,14],deliv:8,describ:8,descript:8,detail:[2,8],detect:8,determin:8,devic:[7,14,15],dialog:8,dict:[2,6,7],dictionari:[7,8],did:2,differ:3,directli:[7,14],disabl:2,disconnect:8,distribut:8,doesn:7,dot:2,down:16,dst:16,dure:11,effort:2,either:8,els:[3,8],empti:8,emqp:[],enabl:2,encount:[2,4],end:[2,14],enderlab:[],ensur:[6,8],error:2,even:8,event:7,eventloop:6,eventmqerror:4,everi:6,except:[],execut:[2,8],exist:4,explicitli:14,expos:6,extra:8,fail:[2,8],failur:2,fair:8,fals:[2,6,8,9,11,14],few:3,field:8,file:12,find:14,finish:8,first:8,fit:8,flag:[2,7],follow:[2,8],form:6,format:[2,6,8,15],forward:15,found:10,foundat:8,frame:[],free:8,from:[4,6,7,8,10,16],frontend_addr:10,func:[2,6],fwd_emqp_router_messag:15,gener:[6,7,8,9,11,15],generate_msgid:15,github:[],give:2,gmtime:[],gnu:8,goal:[],good:14,guarante:[2,8],guarente:2,hand:13,handl:[6,8,10],happen:[7,10,11],have:[2,14,15],haven:10,header:[],heartbeat:[],heartbeat_timeout:10,heartbeati:14,heartbeatmixin:14,heavi:8,here:8,hope:8,how:[2,7],html:8,http:8,ident:8,identifi:10,ietf:8,immediatli:2,implement:[8,14],impli:8,includ:[2,8],incom:[],index:5,inform:[6,8,10],inherit:4,initi:2,insert:[8,14],instal:3,instanc:6,instanti:[2,6],interpret:8,interv:8,intes:2,invalidmessageerror:4,is_dead:14,isn:10,issu:[3,5,8],iter:7,itself:10,job:[],jobmanag:[],kei:[7,8],know:[2,10],kwarg2:2,kwarg:[2,6,7,9,10,11,14],languag:[],last:2,later:8,least:8,leav:8,length:13,let:8,licens:[],like:[6,13,14],list:[2,6,14],listen:[6,9,10,11],locat:2,log:2,logic:[6,10],longer:4,look:14,loop:[7,10],lower:10,mai:[2,8,14],main:6,make:13,malform:4,manag:[],mani:[2,8,11],manual:8,master:8,member:10,merchant:8,mess:16,messag:[],message_bodi:15,message_id:15,messageerror:4,met:14,meta:15,method:[2,6,7,10,14],mode:[],modifi:8,modul:[1,2,5,6,13],monoton:[14,16],more:[8,13],msg:[6,8,10,15],msg_id:[],msgid:[6,10],multipart:[8,14],must:[8,14],name:[2,6,8,9,10,11],need:[10,11],never:16,next:7,none:[2,6,9,10,11,14,15],noop:6,note:[6,9,11],now:14,number:16,object:[7,14],occur:14,on_ack:6,on_command:[6,10],on_heartbeat:[6,10],on_inform:10,on_readi:10,on_receive_repli:[],on_receive_request:10,on_recv:9,on_request:6,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,14],out:14,overwhelm:2,own:14,page:5,param:2,paramet:[2,6,7,9,10,11,14,15],pars:[6,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,14],peergoneawayerror:4,pictur:8,placehold:[6,10],poll:7,poller:[],pollin:7,pollout:7,pool:[8,10],portion:6,possibl:3,practic:14,prefix:15,prepend:8,pretti:8,problem:4,process:[6,8,11],process_messag:6,process_worker_messag:10,prop:[],properti:[9,11],protocol:[],protocol_vers:14,provid:[10,14],pub:8,publish:8,purpos:8,queu:2,queue:[2,6,8,10],quick:2,rais:[2,4,9,11,15],random:[13,15],random_charact:13,raw:14,raw_messag:[],readi:[6,8,9,10,11],rebuild:11,receiv:[],recent:8,reciev:[],recip:[],recipi:[10,14,15],recipient_id:15,recommend:8,reconnect:11,recv:14,recv_multipart:14,redistribut:8,refer:14,regist:[7,10],regular:8,rel:3,reliabl:8,remain:7,remot:14,remov:[8,10],reopen:6,rep:9,repli:[2,8,15],reply_request:2,req:11,request:[],requeue_work:10,requir:8,requri:8,reset:[6,14],reset_heartbeat_count:14,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:[],run:[2,6],same:11,search:5,second:16,seconds_until:16,see:[7,8],self:[6,10,11],send:[2,4,6,8,10,11,14,15],send_ack:10,send_emqp_messag:15,send_emqp_router_messag:15,send_heartbeat:[10,14],send_inform:6,send_messag:[],send_multipart:14,send_raw:[],send_readi:6,send_request:2,send_workers_heartbeat:10,sender:[],sender_id:15,sent:[8,10,14],seper:[2,8],serv:8,server:[6,8],servic:8,set:[2,6,7,8,11,14],shall:8,shalt:12,should:[2,4,7,8,9,10,11],shown:8,simpl:[10,13],sinc:16,singl:8,skip:[11,14],skip_zmqstream:11,socket:[2,6,7,8,9,10,11,14,15],softwar:8,some:[2,6,13,14,15],someon:8,someth:[2,11,14,16],somewher:3,sourc:[3,5],spawn:6,specif:[],specifi:[8,13,14],start:[6,9,10,11],state:14,statu:8,stop:8,str:[2,6,9,10,11,13,14,15],string:[2,6,8,9,10,11,15],structur:4,sub:8,subclass:4,subcmd:6,subcommand:[2,6],subject:8,subset:8,subtract:16,success:8,successfulli:2,system:3,take:[6,10,11,15],task:[2,6],tcp:[6,10],term:8,thei:2,them:9,thi:[1,2,4,6,7,8,9,10,11,13,14,16],thing:[2,6,11,13,14,15],thou:12,threshold:14,through:[8,10],thy:12,time:[],timeout:7,timestamp:[8,16],timeutil:[],timezon:[],tip:3,tool:8,topic:[],topolog:[],tornado:6,trace:8,track:14,tri:2,tupl:[7,14,15],type:[2,8,9,11,13,14],typecast:7,typeerror:9,undefin:7,under:8,uniqu:[6,8,10],univers:[],unix:8,unless:[6,9,11],unregist:7,until:16,untouch:[10,15],unus:[],upon:8,upstream:6,usual:[],utilit:[],uuid:[6,9,11],valid:8,valu:[2,7,8,14,15,16],variabl:14,version:[3,8,14],via:2,wait:[2,7],walk:6,warn:10,warranti:8,weak:14,web:8,well:8,went:2,when:[1,2,3,4,8,9,10,11,14],where:[2,8,16],which:8,who:[1,10],wish:[2,15],without:[8,11],word:8,work:[3,14],worker:[],worker_id:10,worri:8,would:[2,16],wrap:[],wrong:2,you:[2,3,8,11,14,15],your:[2,8,14],zcontext:[9,11],zeromq:8,zmq:[7,8,9,10,11,14,15],zmqreceivemixin:14,zmqsendmixin:14,zmqstream:11,zsocket:[9,11]},titles:["API Documentation","<code class=\"docutils literal\"><span class=\"pre\">client</span></code> – Client Utilities","<code class=\"docutils literal\"><span class=\"pre\">messages</span></code> – Client Messaging","Contributing to EventMQ","<code class=\"docutils literal\"><span class=\"pre\">exceptions</span></code> – Exceptions","EventMQ Documentation","<code class=\"docutils literal\"><span class=\"pre\">jobmanager</span></code> – Job Manager","<code class=\"docutils literal\"><span class=\"pre\">poller</span></code> – Poller","EventMQ Protocol Specification","<code class=\"docutils literal\"><span class=\"pre\">receiver</span></code> – Receiver","<code class=\"docutils literal\"><span class=\"pre\">router</span></code> – Router","<code class=\"docutils literal\"><span class=\"pre\">sender</span></code> – Sender","Style Guide","<code class=\"docutils literal\"><span class=\"pre\">utils</span></code> – Utilities","<code class=\"docutils literal\"><span class=\"pre\">classes</span></code> – Utility Classes","<code class=\"docutils literal\"><span class=\"pre\">messages</span></code> – Message Utilities","<code class=\"docutils literal\"><span class=\"pre\">timeutils</span></code> – Time Utilites"],titleterms:{"class":14,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,global:8,goal:8,guid:12,header:8,heartbeat:8,indic:5,job:6,jobmanag:6,languag:8,licens:8,manag:6,messag:[2,15],poller:7,protocol:8,receiv:9,request:8,router:[8,10],sender:11,specif:8,style:12,tabl:5,time:16,timeutil:16,topolog:8,util:[1,13,14,15],utilit:16,welcom:[],worker:8}}) \ No newline at end of file | 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> – Client Utilities","<code class=\"docutils literal\"><span class=\"pre\">messages</span></code> – Client Messaging","Contributing to EventMQ","<code class=\"docutils literal\"><span class=\"pre\">exceptions</span></code> – Exceptions","Getting Started","Glossary","EventMQ Documentation","<code class=\"docutils literal\"><span class=\"pre\">jobmanager</span></code> – Job Manager","<code class=\"docutils literal\"><span class=\"pre\">poller</span></code> – Poller","Goals","<code class=\"docutils literal\"><span class=\"pre\">receiver</span></code> – Receiver","<code class=\"docutils literal\"><span class=\"pre\">router</span></code> – Router","<code class=\"docutils literal\"><span class=\"pre\">sender</span></code> – Sender","Style Guide","<code class=\"docutils literal\"><span class=\"pre\">utils</span></code> – Utilities","<code class=\"docutils literal\"><span class=\"pre\">classes</span></code> – Utility Classes","<code class=\"docutils literal\"><span class=\"pre\">messages</span></code> – Message Utilities","<code class=\"docutils literal\"><span class=\"pre\">timeutils</span></code> – 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 | ||
diff --git a/sender.html b/sender.html index d9463d4..6b49cdf 100644 --- a/sender.html +++ b/sender.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> – 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> – 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> – 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> – 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> – 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> – 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> – Poller</a></li> |
| @@ -264,6 +265,22 @@ socket</li> | |||
| 264 | </table> | 265 | </table> |
| 265 | </dd></dl> | 266 | </dd></dl> |
| 266 | 267 | ||
| 268 | <dl class="method"> | ||
| 269 | <dt id="eventmq.sender.Sender.unbind"> | ||
| 270 | <code class="descname">unbind</code><span class="sig-paren">(</span><em>addr</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.sender.Sender.unbind" title="Permalink to this definition">¶</a></dt> | ||
| 271 | <dd><p>Unbinds current socket</p> | ||
| 272 | <table class="docutils field-list" frame="void" rules="none"> | ||
| 273 | <col class="field-name" /> | ||
| 274 | <col class="field-body" /> | ||
| 275 | <tbody valign="top"> | ||
| 276 | <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>) – Address to unbind from as a string</td> | ||
| 277 | </tr> | ||
| 278 | <tr class="field-even field"><th class="field-name">Raises:</th><td class="field-body"><code class="xref py py-class docutils literal"><span class="pre">Exception</span></code></td> | ||
| 279 | </tr> | ||
| 280 | </tbody> | ||
| 281 | </table> | ||
| 282 | </dd></dl> | ||
| 283 | |||
| 267 | </dd></dl> | 284 | </dd></dl> |
| 268 | 285 | ||
| 269 | </div> | 286 | </div> |
| @@ -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> – 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> – 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> – 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> – 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> – 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> – 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> – Poller</a></li> |
diff --git a/utils/classes.html b/utils/classes.html index 4730048..af14fda 100644 --- a/utils/classes.html +++ b/utils/classes.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> – 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> – 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> – 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> – 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> – 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> – 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> – Poller</a></li> |
| @@ -151,6 +152,117 @@ | |||
| 151 | <h1><code class="xref py py-mod docutils literal"><span class="pre">classes</span></code> – 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> – Utility Classes<a class="headerlink" href="#classes-utility-classes" title="Permalink to this headline">¶</a></h1> |
| 152 | <p>Defines some classes to use when implementing ZMQ devices</p> | 153 | <p>Defines some classes to use when implementing ZMQ devices</p> |
| 153 | <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 | ||
| 159 | EMQP 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. | ||
| 173 | Usually: <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 | ||
| 179 | in the event loop so if you want to respond to the SCHEDULE command, you | ||
| 180 | would 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 | ||
| 192 | properties must be updated for heartbeating | ||
| 193 | :returns: bool - True if heartbeating is enabled, False if it isn’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> | ||
| 207 | as 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> – 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>) – Either ‘worker’ or ‘scheduler’</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>) – <ul> | ||
| 235 | <li>For ‘worker’ type, the queues the worker is listening on</li> | ||
| 236 | <li>Ignored for ‘scheduler’ 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> – 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>) – connection string to connect to</td> | ||
| 258 | </tr> | ||
| 259 | </tbody> | ||
| 260 | </table> | ||
| 261 | </dd></dl> | ||
| 262 | |||
| 263 | </dd></dl> | ||
| 264 | |||
| 265 | <dl class="class"> | ||
| 154 | <dt id="eventmq.utils.classes.HeartbeatMixin"> | 266 | <dt id="eventmq.utils.classes.HeartbeatMixin"> |
| 155 | <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> | 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 | <dd><p>Provides methods for implementing heartbeats</p> | 268 | <dd><p>Provides methods for implementing heartbeats</p> |
diff --git a/utils/messages.html b/utils/messages.html index b83d630..08a6c1e 100644 --- a/utils/messages.html +++ b/utils/messages.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> – 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> – 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> – 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> – 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> – 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> – 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> – Poller</a></li> |
diff --git a/utils/timeutils.html b/utils/timeutils.html index fc44e97..087322b 100644 --- a/utils/timeutils.html +++ b/utils/timeutils.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> – 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> – 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> – 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> – 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> – 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> – 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> – Poller</a></li> |
| @@ -149,6 +150,48 @@ | |||
| 149 | 150 | ||
| 150 | <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"> |
| 151 | <h1><code class="xref py py-mod docutils literal"><span class="pre">timeutils</span></code> – 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> – 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’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) | ||
| 161 | interval = IntervalIter(monotonic, 300) | ||
| 162 | # Py2</p> | ||
| 163 | <p>interval.next() # 300 | ||
| 164 | interval.next() # 600</p> | ||
| 165 | <p class="last"># Py3 | ||
| 166 | next(interval) # 300 | ||
| 167 | next(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>) – 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>) – </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 | |||
| 152 | <dl class="function"> | 195 | <dl class="function"> |
| 153 | <dt id="eventmq.utils.timeutils.monotonic"> | 196 | <dt id="eventmq.utils.timeutils.monotonic"> |
| 154 | <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> |