diff options
| author | jason | 2016-09-21 12:58:12 -0600 |
|---|---|---|
| committer | jason | 2016-09-21 12:58:12 -0600 |
| commit | 41b2025fe4e22689599ae1c2d7feb91b2e978d7e (patch) | |
| tree | d2ce22b99ad1fc6ed8d70925563907db07dcb7ae | |
| parent | 8a8396c454206feb589a806db2ddf8a03d2d757e (diff) | |
| download | eventmq-41b2025fe4e22689599ae1c2d7feb91b2e978d7e.tar.gz eventmq-41b2025fe4e22689599ae1c2d7feb91b2e978d7e.zip | |
docs updates
| -rw-r--r-- | _sources/protocol.txt | 118 | ||||
| -rw-r--r-- | _static/pygments.css | 2 | ||||
| -rw-r--r-- | api.html | 2 | ||||
| -rw-r--r-- | client.html | 2 | ||||
| -rw-r--r-- | client/messages.html | 27 | ||||
| -rw-r--r-- | contributing.html | 2 | ||||
| -rw-r--r-- | exceptions.html | 8 | ||||
| -rw-r--r-- | genindex.html | 39 | ||||
| -rw-r--r-- | index.html | 2 | ||||
| -rw-r--r-- | jobmanager.html | 30 | ||||
| -rw-r--r-- | objects.inv | bin | 1369 -> 1419 bytes | |||
| -rw-r--r-- | poller.html | 2 | ||||
| -rw-r--r-- | protocol.html | 275 | ||||
| -rw-r--r-- | py-modindex.html | 2 | ||||
| -rw-r--r-- | receiver.html | 2 | ||||
| -rw-r--r-- | router.html | 37 | ||||
| -rw-r--r-- | search.html | 2 | ||||
| -rw-r--r-- | searchindex.js | 2 | ||||
| -rw-r--r-- | sender.html | 2 | ||||
| -rw-r--r-- | settings_file.html | 2 | ||||
| -rw-r--r-- | using.html | 2 | ||||
| -rw-r--r-- | utils/classes.html | 2 | ||||
| -rw-r--r-- | utils/devices.html | 2 | ||||
| -rw-r--r-- | utils/index.html | 2 | ||||
| -rw-r--r-- | utils/messages.html | 2 | ||||
| -rw-r--r-- | utils/settings.html | 2 | ||||
| -rw-r--r-- | utils/timeutils.html | 2 |
27 files changed, 363 insertions, 209 deletions
diff --git a/_sources/protocol.txt b/_sources/protocol.txt index c341403..44544d6 100644 --- a/_sources/protocol.txt +++ b/_sources/protocol.txt | |||
| @@ -5,12 +5,12 @@ EventMQ Protocol Specification | |||
| 5 | 5 | ||
| 6 | Goals | 6 | Goals |
| 7 | ===== | 7 | ===== |
| 8 | 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 | 8 | 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. |
| 9 | 9 | ||
| 10 | The goals are to: | 10 | The goals are to: |
| 11 | 11 | ||
| 12 | * Specify a protocol to follow when implementing a component to EventMQ. | 12 | * Specify a protocol to follow when implementing a component to EventMQ. |
| 13 | * Allow requests to be routed to workers by an abstracted service name. | 13 | * Allow requests to be routed to workers by an abstracted service name (named queues). |
| 14 | * Detect disconnected peers through heartbeating. | 14 | * Detect disconnected peers through heartbeating. |
| 15 | * Allow for message tracing and debugging. | 15 | * Allow for message tracing and debugging. |
| 16 | 16 | ||
| @@ -60,6 +60,52 @@ FRAME Value Description | |||
| 60 | 4 _MSGID_ The message id of the message this ACK is acknowledging | 60 | 4 _MSGID_ The message id of the message this ACK is acknowledging |
| 61 | ====== ============== =========== | 61 | ====== ============== =========== |
| 62 | 62 | ||
| 63 | A **REPLY** frame consists of a 5-frame multipart message, formatted as follows. | ||
| 64 | |||
| 65 | ====== ============== =========== | ||
| 66 | FRAME Value Description | ||
| 67 | ====== ============== =========== | ||
| 68 | 0 _EMPTY_ leave empty | ||
| 69 | 1 eMQP/1.0 Protocol version | ||
| 70 | 2 REPLY command | ||
| 71 | 3 _MSGID_ A unique id for the msg | ||
| 72 | 4 _MSG_ The reply to respond with | ||
| 73 | ====== ============== =========== | ||
| 74 | |||
| 75 | A **HEARTBEAT** frame consists of a | ||
| 76 | |||
| 77 | ====== ============== =========== | ||
| 78 | FRAME Value Description | ||
| 79 | ====== ============== =========== | ||
| 80 | 0 _EMPTY_ leave empty | ||
| 81 | 1 eMQP/1.0 Protocol version | ||
| 82 | 2 HEARTBEAT command | ||
| 83 | 3 _MSGID_ A unique id for the msg | ||
| 84 | 4 _UNIX_TS_ A unix timestamp | ||
| 85 | ====== ============== =========== | ||
| 86 | |||
| 87 | A **DISCONNECT** frame consists of | ||
| 88 | |||
| 89 | ====== ============== =========== | ||
| 90 | FRAME Value Description | ||
| 91 | ====== ============== =========== | ||
| 92 | 0 _EMPTY_ leave empty | ||
| 93 | 1 eMQP/1.0 Protocol version | ||
| 94 | 2 DISCONNECT command | ||
| 95 | 3 _MSGID_ A unique id for the msg | ||
| 96 | ====== ============== =========== | ||
| 97 | |||
| 98 | A **KBAI** frame consists of | ||
| 99 | |||
| 100 | ====== ============== =========== | ||
| 101 | FRAME Value Description | ||
| 102 | ====== ============== =========== | ||
| 103 | 0 _EMPTY_ leave empty | ||
| 104 | 1 eMQP/1.0 Protocol version | ||
| 105 | 2 KBAI command | ||
| 106 | 3 _MSGID_ A unique id for the msg | ||
| 107 | ====== ============== =========== | ||
| 108 | |||
| 63 | eMQP / Client | 109 | eMQP / Client |
| 64 | ------------- | 110 | ------------- |
| 65 | A **REQUEST** command consists of a 7-frame multipart message, formatted as follows. | 111 | A **REQUEST** command consists of a 7-frame multipart message, formatted as follows. |
| @@ -159,44 +205,9 @@ FRAME Value Description | |||
| 159 | 3 _MSGID_ A unique id for the msg | 205 | 3 _MSGID_ A unique id for the msg |
| 160 | ====== ============== =========== | 206 | ====== ============== =========== |
| 161 | 207 | ||
| 162 | A **REPLY** frame consists of a 5-frame multipart message, formatted as follows. | ||
| 163 | |||
| 164 | ====== ============== =========== | ||
| 165 | FRAME Value Description | ||
| 166 | ====== ============== =========== | ||
| 167 | 0 _EMPTY_ leave empty | ||
| 168 | 1 eMQP/1.0 Protocol version | ||
| 169 | 2 REPLY command | ||
| 170 | 3 _MSGID_ A unique id for the msg | ||
| 171 | 4 _MSG_ The reply to respond with | ||
| 172 | ====== ============== =========== | ||
| 173 | |||
| 174 | A **HEARTBEAT** frame consists of a | ||
| 175 | |||
| 176 | ====== ============== =========== | ||
| 177 | FRAME Value Description | ||
| 178 | ====== ============== =========== | ||
| 179 | 0 _EMPTY_ leave empty | ||
| 180 | 1 eMQP/1.0 Protocol version | ||
| 181 | 2 HEARTBEAT command | ||
| 182 | 3 _MSGID_ A unique id for the msg | ||
| 183 | 4 _UNIX_TS_ A unix timestamp | ||
| 184 | ====== ============== =========== | ||
| 185 | |||
| 186 | A **DISCONNECT** frame consists of | ||
| 187 | |||
| 188 | ====== ============== =========== | ||
| 189 | FRAME Value Description | ||
| 190 | ====== ============== =========== | ||
| 191 | 0 _EMPTY_ leave empty | ||
| 192 | 1 eMQP/1.0 Protocol version | ||
| 193 | 2 DISCONNECT command | ||
| 194 | 3 _MSGID_ A unique id for the msg | ||
| 195 | ====== ============== =========== | ||
| 196 | |||
| 197 | Heartbeating | 208 | Heartbeating |
| 198 | ------------ | 209 | ------------ |
| 199 | * HEARTBEAT commands are valid at any time after an INFORM command | 210 | * HEARTBEAT commands are valid at any time after an INFORM command. |
| 200 | * Any command except DISCONNECT act as a heartbeat. Peers SHOULD NOT send HEARTBEAT commands while sending other commands. | 211 | * Any command except DISCONNECT act as a heartbeat. Peers SHOULD NOT send HEARTBEAT commands while sending other commands. |
| 201 | * Worker and broker MUST send heartbeats at regular and agreed-upon intervals. | 212 | * 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. | 213 | * Scheduler and broker MUST send heartbeats at regular and agreed-upon intervals. |
| @@ -204,16 +215,29 @@ Heartbeating | |||
| 204 | * If the broker detects that a worker has disconnected it should stop sending it a message of any type. | 215 | * 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. | 216 | * If the scheduler detects that the broker disconnects it SHOULD restart the conversation. |
| 206 | 217 | ||
| 207 | REQUEST Headers | 218 | Headers |
| 208 | --------------- | 219 | --------------- |
| 209 | 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. | 220 | Headers MUST be 0 to many comma seperated values inserted into the header field. If there are no headers required, an empty string MUST be sent where headers are required. |
| 210 | 221 | ||
| 211 | Below is a table which defines and describes the headers. | 222 | Below is a table which defines and describes the headers. |
| 212 | 223 | ||
| 213 | =============== ======= ======= ======= =========== | 224 | |
| 214 | Header REQUEST PUBLISH Default Description | 225 | ================= ======= ======= ======== ======= =========== |
| 215 | =============== ======= ======= ======= =========== | 226 | Header REQUEST PUBLISH SCHEDULE Default Description |
| 216 | reply-requested X False Once the job is finished, send a reply back with information from the job. If there is no information reply with a True value. | 227 | ================= ======= ======= ======== ======= =========== |
| 217 | retry-count:# X 0 Retry a failed job this many times before accepting defeat. | 228 | reply-requested X False Once the job is finished, send a reply back with information from the job. If there is no information reply with a True value. |
| 218 | guarantee X False Ensure the job completes by letting someone else worry about a success reply. | 229 | retry-count:# X 0 Retry a failed job this many times before accepting defeat. |
| 219 | =============== ======= ======= ======= =========== | 230 | guarantee X False Ensure the job completes by letting someone else worry about a success reply. |
| 231 | nohaste X False When scheduling a job, set this to True if you don't want the job to run immediately as it's scheduled. Instead, it will run for the first time when the interval has elapsed. | ||
| 232 | ================= ======= ======= ======== ======= =========== | ||
| 233 | |||
| 234 | DISCONNECT and KBAI | ||
| 235 | =================== | ||
| 236 | When a component receives a DISCONNECT command it: | ||
| 237 | * MUST send a KBAI command to all connected components. | ||
| 238 | * MUST stop sending and receiving any messages | ||
| 239 | * MUST allow any pending messages or jobs to complete. | ||
| 240 | |||
| 241 | When a component receives a KBAI command it: | ||
| 242 | * MUST stop sending any messages to the disconnecting component. | ||
| 243 | * SHOULD Clean up references to the disconnecting component. | ||
diff --git a/_static/pygments.css b/_static/pygments.css index 57eadc0..8213e90 100644 --- a/_static/pygments.css +++ b/_static/pygments.css | |||
| @@ -4,8 +4,10 @@ | |||
| 4 | .highlight .err { border: 1px solid #FF0000 } /* Error */ | 4 | .highlight .err { border: 1px solid #FF0000 } /* Error */ |
| 5 | .highlight .k { color: #007020; font-weight: bold } /* Keyword */ | 5 | .highlight .k { color: #007020; font-weight: bold } /* Keyword */ |
| 6 | .highlight .o { color: #666666 } /* Operator */ | 6 | .highlight .o { color: #666666 } /* Operator */ |
| 7 | .highlight .ch { color: #408090; font-style: italic } /* Comment.Hashbang */ | ||
| 7 | .highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */ | 8 | .highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */ |
| 8 | .highlight .cp { color: #007020 } /* Comment.Preproc */ | 9 | .highlight .cp { color: #007020 } /* Comment.Preproc */ |
| 10 | .highlight .cpf { color: #408090; font-style: italic } /* Comment.PreprocFile */ | ||
| 9 | .highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */ | 11 | .highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */ |
| 10 | .highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ | 12 | .highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ |
| 11 | .highlight .gd { color: #A00000 } /* Generic.Deleted */ | 13 | .highlight .gd { color: #A00000 } /* Generic.Deleted */ |
| @@ -60,7 +60,7 @@ | |||
| 60 | 60 | ||
| 61 | 61 | ||
| 62 | <div class="version"> | 62 | <div class="version"> |
| 63 | 0.2.1 | 63 | 0.2.6.2 |
| 64 | </div> | 64 | </div> |
| 65 | 65 | ||
| 66 | 66 | ||
diff --git a/client.html b/client.html index 86c2456..dab0af9 100644 --- a/client.html +++ b/client.html | |||
| @@ -61,7 +61,7 @@ | |||
| 61 | 61 | ||
| 62 | 62 | ||
| 63 | <div class="version"> | 63 | <div class="version"> |
| 64 | 0.2.1 | 64 | 0.2.6.2 |
| 65 | </div> | 65 | </div> |
| 66 | 66 | ||
| 67 | 67 | ||
diff --git a/client/messages.html b/client/messages.html index fa76d2a..b59cf18 100644 --- a/client/messages.html +++ b/client/messages.html | |||
| @@ -61,7 +61,7 @@ | |||
| 61 | 61 | ||
| 62 | 62 | ||
| 63 | <div class="version"> | 63 | <div class="version"> |
| 64 | 0.2.1 | 64 | 0.2.6.2 |
| 65 | </div> | 65 | </div> |
| 66 | 66 | ||
| 67 | 67 | ||
| @@ -150,27 +150,8 @@ | |||
| 150 | <span class="target" id="module-eventmq.client.messages"></span><div class="section" id="messages-client-messaging"> | 150 | <span class="target" id="module-eventmq.client.messages"></span><div class="section" id="messages-client-messaging"> |
| 151 | <h1><code class="xref py py-mod docutils literal"><span class="pre">messages</span></code> – Client Messaging<a class="headerlink" href="#messages-client-messaging" title="Permalink to this headline">¶</a></h1> | 151 | <h1><code class="xref py py-mod docutils literal"><span class="pre">messages</span></code> – Client Messaging<a class="headerlink" href="#messages-client-messaging" title="Permalink to this headline">¶</a></h1> |
| 152 | <dl class="function"> | 152 | <dl class="function"> |
| 153 | <dt id="eventmq.client.messages.build_module_path"> | ||
| 154 | <code class="descclassname">eventmq.client.messages.</code><code class="descname">build_module_path</code><span class="sig-paren">(</span><em>func</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.client.messages.build_module_path" title="Permalink to this definition">¶</a></dt> | ||
| 155 | <dd><p>Builds the module path in string format for a callable.</p> | ||
| 156 | <table class="docutils field-list" frame="void" rules="none"> | ||
| 157 | <col class="field-name" /> | ||
| 158 | <col class="field-body" /> | ||
| 159 | <tbody valign="top"> | ||
| 160 | <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><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 function or method to build the path for</td> | ||
| 161 | </tr> | ||
| 162 | <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">(import path (w/ class seperated by a ‘:’), callable name) or | ||
| 163 | (None, None) on error</td> | ||
| 164 | </tr> | ||
| 165 | <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/library/functions.html#list" title="(in Python v2.7)">list</a></td> | ||
| 166 | </tr> | ||
| 167 | </tbody> | ||
| 168 | </table> | ||
| 169 | </dd></dl> | ||
| 170 | |||
| 171 | <dl class="function"> | ||
| 172 | <dt id="eventmq.client.messages.defer_job"> | 153 | <dt id="eventmq.client.messages.defer_job"> |
| 173 | <code class="descclassname">eventmq.client.messages.</code><code class="descname">defer_job</code><span class="sig-paren">(</span><em>socket</em>, <em>func</em>, <em>args=()</em>, <em>kwargs=None</em>, <em>class_args=()</em>, <em>class_kwargs=None</em>, <em>reply_requested=False</em>, <em>guarantee=False</em>, <em>retry_count=0</em>, <em>queue='default'</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.client.messages.defer_job" title="Permalink to this definition">¶</a></dt> | 154 | <code class="descclassname">eventmq.client.messages.</code><code class="descname">defer_job</code><span class="sig-paren">(</span><em>socket</em>, <em>func</em>, <em>args=()</em>, <em>kwargs=None</em>, <em>class_args=()</em>, <em>class_kwargs=None</em>, <em>reply_requested=False</em>, <em>guarantee=False</em>, <em>retry_count=0</em>, <em>debounce_secs=False</em>, <em>queue='default'</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.client.messages.defer_job" title="Permalink to this definition">¶</a></dt> |
| 174 | <dd><p>Used to send a job to a worker to execute via <cite>socket</cite>.</p> | 155 | <dd><p>Used to send a job to a worker to execute via <cite>socket</cite>.</p> |
| 175 | <p>This tries not to raise any exceptions so use some of the message flags to | 156 | <p>This tries not to raise any exceptions so use some of the message flags to |
| 176 | guarentee things.</p> | 157 | guarentee things.</p> |
| @@ -188,11 +169,11 @@ initializing (if applicable).</li> | |||
| 188 | <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="#id7"><span class="problematic" id="id8">**</span></a>kwargs to pass to the class when | 169 | <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="#id7"><span class="problematic" id="id8">**</span></a>kwargs to pass to the class when |
| 189 | initializing (if applicable).</li> | 170 | initializing (if applicable).</li> |
| 190 | <li><strong>reply_requested</strong> (<a class="reference external" href="https://docs.python.org/library/functions.html#bool" title="(in Python v2.7)"><em>bool</em></a>) – request the return value of func as a reply</li> | 171 | <li><strong>reply_requested</strong> (<a class="reference external" href="https://docs.python.org/library/functions.html#bool" title="(in Python v2.7)"><em>bool</em></a>) – request the return value of func as a reply</li> |
| 191 | <li><strong>guarantee</strong> (<a class="reference external" href="https://docs.python.org/library/functions.html#bool" title="(in Python v2.7)"><em>bool</em></a>) – (Give your best effort) to guarantee that func is | ||
| 192 | executed. Exceptions and things will be logged.</li> | ||
| 193 | <li><strong>retry_count</strong> (<a class="reference external" href="https://docs.python.org/library/functions.html#int" title="(in Python v2.7)"><em>int</em></a>) – How many times should be retried when encountering | 172 | <li><strong>retry_count</strong> (<a class="reference external" href="https://docs.python.org/library/functions.html#int" title="(in Python v2.7)"><em>int</em></a>) – How many times should be retried when encountering |
| 194 | an Exception or some other failure before giving up. (default: 0 | 173 | an Exception or some other failure before giving up. (default: 0 |
| 195 | or immediately fail)</li> | 174 | or immediately fail)</li> |
| 175 | <li><strong>debounce_secs</strong> (<em>secs</em>) – Number of seconds to debounce the job. See | ||
| 176 | <cite>debounce_deferred_job</cite> for more information.</li> | ||
| 196 | <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 to use when executing the job. If this value | 177 | <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 to use when executing the job. If this value |
| 197 | evaluates to False, the default is used. Default: is configured | 178 | evaluates to False, the default is used. Default: is configured |
| 198 | default queue name</li> | 179 | default queue name</li> |
diff --git a/contributing.html b/contributing.html index 205bd46..45ee99e 100644 --- a/contributing.html +++ b/contributing.html | |||
| @@ -60,7 +60,7 @@ | |||
| 60 | 60 | ||
| 61 | 61 | ||
| 62 | <div class="version"> | 62 | <div class="version"> |
| 63 | 0.2.1 | 63 | 0.2.6.2 |
| 64 | </div> | 64 | </div> |
| 65 | 65 | ||
| 66 | 66 | ||
diff --git a/exceptions.html b/exceptions.html index 4f94f7f..b3a9914 100644 --- a/exceptions.html +++ b/exceptions.html | |||
| @@ -61,7 +61,7 @@ | |||
| 61 | 61 | ||
| 62 | 62 | ||
| 63 | <div class="version"> | 63 | <div class="version"> |
| 64 | 0.2.1 | 64 | 0.2.6.2 |
| 65 | </div> | 65 | </div> |
| 66 | 66 | ||
| 67 | 67 | ||
| @@ -147,6 +147,12 @@ | |||
| 147 | <p>These are the exceptions that are raised by EventMQ. All exceptions should | 147 | <p>These are the exceptions that are raised by EventMQ. All exceptions should |
| 148 | be subclasses of <a class="reference internal" href="#eventmq.exceptions.EventMQError" title="eventmq.exceptions.EventMQError"><code class="xref py py-class docutils literal"><span class="pre">EventMQError</span></code></a></p> | 148 | be subclasses of <a class="reference internal" href="#eventmq.exceptions.EventMQError" title="eventmq.exceptions.EventMQError"><code class="xref py py-class docutils literal"><span class="pre">EventMQError</span></code></a></p> |
| 149 | <dl class="exception"> | 149 | <dl class="exception"> |
| 150 | <dt id="eventmq.exceptions.CallableFromPathError"> | ||
| 151 | <em class="property">exception </em><code class="descclassname">eventmq.exceptions.</code><code class="descname">CallableFromPathError</code><a class="headerlink" href="#eventmq.exceptions.CallableFromPathError" title="Permalink to this definition">¶</a></dt> | ||
| 152 | <dd><p>Raised when construction of a callable from a path and callable_name fails.</p> | ||
| 153 | </dd></dl> | ||
| 154 | |||
| 155 | <dl class="exception"> | ||
| 150 | <dt id="eventmq.exceptions.EventMQError"> | 156 | <dt id="eventmq.exceptions.EventMQError"> |
| 151 | <em class="property">exception </em><code class="descclassname">eventmq.exceptions.</code><code class="descname">EventMQError</code><a class="headerlink" href="#eventmq.exceptions.EventMQError" title="Permalink to this definition">¶</a></dt> | 157 | <em class="property">exception </em><code class="descclassname">eventmq.exceptions.</code><code class="descname">EventMQError</code><a class="headerlink" href="#eventmq.exceptions.EventMQError" title="Permalink to this definition">¶</a></dt> |
| 152 | <dd><p>All exceptions raised by EventMQ inherit from this base exception.</p> | 158 | <dd><p>All exceptions raised by EventMQ inherit from this base exception.</p> |
diff --git a/genindex.html b/genindex.html index dbfbf25..6bd3f7f 100644 --- a/genindex.html +++ b/genindex.html | |||
| @@ -59,7 +59,7 @@ | |||
| 59 | 59 | ||
| 60 | 60 | ||
| 61 | <div class="version"> | 61 | <div class="version"> |
| 62 | 0.2.1 | 62 | 0.2.6.2 |
| 63 | </div> | 63 | </div> |
| 64 | 64 | ||
| 65 | 65 | ||
| @@ -132,7 +132,6 @@ | |||
| 132 | <div class="genindex-jumpbox"> | 132 | <div class="genindex-jumpbox"> |
| 133 | <a href="#_"><strong>_</strong></a> | 133 | <a href="#_"><strong>_</strong></a> |
| 134 | | <a href="#A"><strong>A</strong></a> | 134 | | <a href="#A"><strong>A</strong></a> |
| 135 | | <a href="#B"><strong>B</strong></a> | ||
| 136 | | <a href="#C"><strong>C</strong></a> | 135 | | <a href="#C"><strong>C</strong></a> |
| 137 | | <a href="#D"><strong>D</strong></a> | 136 | | <a href="#D"><strong>D</strong></a> |
| 138 | | <a href="#E"><strong>E</strong></a> | 137 | | <a href="#E"><strong>E</strong></a> |
| @@ -243,19 +242,13 @@ | |||
| 243 | </dl></td> | 242 | </dl></td> |
| 244 | </tr></table> | 243 | </tr></table> |
| 245 | 244 | ||
| 246 | <h2 id="B">B</h2> | 245 | <h2 id="C">C</h2> |
| 247 | <table style="width: 100%" class="indextable genindextable"><tr> | 246 | <table style="width: 100%" class="indextable genindextable"><tr> |
| 248 | <td style="width: 33%" valign="top"><dl> | 247 | <td style="width: 33%" valign="top"><dl> |
| 249 | 248 | ||
| 250 | <dt><a href="client/messages.html#eventmq.client.messages.build_module_path">build_module_path() (in module eventmq.client.messages)</a> | 249 | <dt><a href="exceptions.html#eventmq.exceptions.CallableFromPathError">CallableFromPathError</a> |
| 251 | </dt> | 250 | </dt> |
| 252 | 251 | ||
| 253 | </dl></td> | ||
| 254 | </tr></table> | ||
| 255 | |||
| 256 | <h2 id="C">C</h2> | ||
| 257 | <table style="width: 100%" class="indextable genindextable"><tr> | ||
| 258 | <td style="width: 33%" valign="top"><dl> | ||
| 259 | 252 | ||
| 260 | <dt><a href="router.html#eventmq.router.Router.clean_up_dead_schedulers">clean_up_dead_schedulers() (eventmq.router.Router method)</a> | 253 | <dt><a href="router.html#eventmq.router.Router.clean_up_dead_schedulers">clean_up_dead_schedulers() (eventmq.router.Router method)</a> |
| 261 | </dt> | 254 | </dt> |
| @@ -400,6 +393,10 @@ | |||
| 400 | <dt><a href="router.html#eventmq.router.Router.get_available_worker">get_available_worker() (eventmq.router.Router method)</a> | 393 | <dt><a href="router.html#eventmq.router.Router.get_available_worker">get_available_worker() (eventmq.router.Router method)</a> |
| 401 | </dt> | 394 | </dt> |
| 402 | 395 | ||
| 396 | |||
| 397 | <dt><a href="router.html#eventmq.router.Router.get_status">get_status() (eventmq.router.Router method)</a> | ||
| 398 | </dt> | ||
| 399 | |||
| 403 | </dl></td> | 400 | </dl></td> |
| 404 | </tr></table> | 401 | </tr></table> |
| 405 | 402 | ||
| @@ -457,6 +454,10 @@ | |||
| 457 | <table style="width: 100%" class="indextable genindextable"><tr> | 454 | <table style="width: 100%" class="indextable genindextable"><tr> |
| 458 | <td style="width: 33%" valign="top"><dl> | 455 | <td style="width: 33%" valign="top"><dl> |
| 459 | 456 | ||
| 457 | <dt><a href="router.html#eventmq.router.Router.job_latencies">job_latencies (eventmq.router.Router attribute)</a> | ||
| 458 | </dt> | ||
| 459 | |||
| 460 | |||
| 460 | <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager">JobManager (class in eventmq.jobmanager)</a> | 461 | <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager">JobManager (class in eventmq.jobmanager)</a> |
| 461 | </dt> | 462 | </dt> |
| 462 | 463 | ||
| @@ -492,10 +493,14 @@ | |||
| 492 | <dt><a href="exceptions.html#eventmq.exceptions.MessageError">MessageError</a> | 493 | <dt><a href="exceptions.html#eventmq.exceptions.MessageError">MessageError</a> |
| 493 | </dt> | 494 | </dt> |
| 494 | 495 | ||
| 496 | |||
| 497 | <dt><a href="utils/timeutils.html#eventmq.utils.timeutils.monotonic">monotonic() (in module eventmq.utils.timeutils)</a> | ||
| 498 | </dt> | ||
| 499 | |||
| 495 | </dl></td> | 500 | </dl></td> |
| 496 | <td style="width: 33%" valign="top"><dl> | 501 | <td style="width: 33%" valign="top"><dl> |
| 497 | 502 | ||
| 498 | <dt><a href="utils/timeutils.html#eventmq.utils.timeutils.monotonic">monotonic() (in module eventmq.utils.timeutils)</a> | 503 | <dt><a href="jobmanager.html#eventmq.jobmanager.mp_init">mp_init() (in module eventmq.jobmanager)</a> |
| 499 | </dt> | 504 | </dt> |
| 500 | 505 | ||
| 501 | </dl></td> | 506 | </dl></td> |
| @@ -535,6 +540,10 @@ | |||
| 535 | </dt> | 540 | </dt> |
| 536 | 541 | ||
| 537 | 542 | ||
| 543 | <dt><a href="router.html#eventmq.router.Router.on_disconnect">on_disconnect() (eventmq.router.Router method)</a> | ||
| 544 | </dt> | ||
| 545 | |||
| 546 | |||
| 538 | <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.on_heartbeat">on_heartbeat() (eventmq.jobmanager.JobManager method)</a> | 547 | <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.on_heartbeat">on_heartbeat() (eventmq.jobmanager.JobManager method)</a> |
| 539 | </dt> | 548 | </dt> |
| 540 | 549 | ||
| @@ -555,6 +564,10 @@ | |||
| 555 | </dt> | 564 | </dt> |
| 556 | 565 | ||
| 557 | 566 | ||
| 567 | <dt><a href="router.html#eventmq.router.Router.on_reply">on_reply() (eventmq.router.Router method)</a> | ||
| 568 | </dt> | ||
| 569 | |||
| 570 | |||
| 558 | <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.on_request">on_request() (eventmq.jobmanager.JobManager method)</a> | 571 | <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.on_request">on_request() (eventmq.jobmanager.JobManager method)</a> |
| 559 | </dt> | 572 | </dt> |
| 560 | 573 | ||
| @@ -775,6 +788,10 @@ | |||
| 775 | </dt> | 788 | </dt> |
| 776 | 789 | ||
| 777 | 790 | ||
| 791 | <dt><a href="jobmanager.html#eventmq.jobmanager.JobManager.send_reply">send_reply() (eventmq.jobmanager.JobManager method)</a> | ||
| 792 | </dt> | ||
| 793 | |||
| 794 | |||
| 778 | <dt><a href="client/messages.html#eventmq.client.messages.send_request">send_request() (in module eventmq.client.messages)</a> | 795 | <dt><a href="client/messages.html#eventmq.client.messages.send_request">send_request() (in module eventmq.client.messages)</a> |
| 779 | </dt> | 796 | </dt> |
| 780 | 797 | ||
| @@ -59,7 +59,7 @@ | |||
| 59 | 59 | ||
| 60 | 60 | ||
| 61 | <div class="version"> | 61 | <div class="version"> |
| 62 | 0.2.1 | 62 | 0.2.6.2 |
| 63 | </div> | 63 | </div> |
| 64 | 64 | ||
| 65 | 65 | ||
diff --git a/jobmanager.html b/jobmanager.html index aa262fa..7712021 100644 --- a/jobmanager.html +++ b/jobmanager.html | |||
| @@ -61,7 +61,7 @@ | |||
| 61 | 61 | ||
| 62 | 62 | ||
| 63 | <div class="version"> | 63 | <div class="version"> |
| 64 | 0.2.1 | 64 | 0.2.6.2 |
| 65 | </div> | 65 | </div> |
| 66 | 66 | ||
| 67 | 67 | ||
| @@ -263,6 +263,34 @@ of work.</p> | |||
| 263 | for another REQUEST message.</p> | 263 | for another REQUEST message.</p> |
| 264 | </dd></dl> | 264 | </dd></dl> |
| 265 | 265 | ||
| 266 | <dl class="method"> | ||
| 267 | <dt id="eventmq.jobmanager.JobManager.send_reply"> | ||
| 268 | <code class="descname">send_reply</code><span class="sig-paren">(</span><em>res</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.jobmanager.JobManager.send_reply" title="Permalink to this definition">¶</a></dt> | ||
| 269 | <dd><p>Sends an REPLY response</p> | ||
| 270 | <table class="docutils field-list" frame="void" rules="none"> | ||
| 271 | <col class="field-name" /> | ||
| 272 | <col class="field-body" /> | ||
| 273 | <tbody valign="top"> | ||
| 274 | <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> | ||
| 275 | <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>) – The socket to use for this ack</li> | ||
| 276 | <li><strong>recipient</strong> (<a class="reference external" href="https://docs.python.org/library/functions.html#str" title="(in Python v2.7)"><em>str</em></a>) – The recipient id for the ack</li> | ||
| 277 | <li><strong>msgid</strong> – The unique id that we are acknowledging</li> | ||
| 278 | </ul> | ||
| 279 | </td> | ||
| 280 | </tr> | ||
| 281 | </tbody> | ||
| 282 | </table> | ||
| 283 | </dd></dl> | ||
| 284 | |||
| 285 | </dd></dl> | ||
| 286 | |||
| 287 | <dl class="function"> | ||
| 288 | <dt id="eventmq.jobmanager.mp_init"> | ||
| 289 | <code class="descclassname">eventmq.jobmanager.</code><code class="descname">mp_init</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.jobmanager.mp_init" title="Permalink to this definition">¶</a></dt> | ||
| 290 | <dd><p>The instance of Context is copied when python multiprocessing fork()s the | ||
| 291 | worker processes, so we need to terminate that Context so a new one can be | ||
| 292 | rebuilt. Without doing this, messages sent from functions in those child | ||
| 293 | processes will never be delivered.</p> | ||
| 266 | </dd></dl> | 294 | </dd></dl> |
| 267 | 295 | ||
| 268 | </div> | 296 | </div> |
diff --git a/objects.inv b/objects.inv index ac41242..79ff0a4 100644 --- a/objects.inv +++ b/objects.inv | |||
| Binary files differ | |||
diff --git a/poller.html b/poller.html index 60e660e..4d406ae 100644 --- a/poller.html +++ b/poller.html | |||
| @@ -61,7 +61,7 @@ | |||
| 61 | 61 | ||
| 62 | 62 | ||
| 63 | <div class="version"> | 63 | <div class="version"> |
| 64 | 0.2.1 | 64 | 0.2.6.2 |
| 65 | </div> | 65 | </div> |
| 66 | 66 | ||
| 67 | 67 | ||
diff --git a/protocol.html b/protocol.html index 274f8d1..828731e 100644 --- a/protocol.html +++ b/protocol.html | |||
| @@ -60,7 +60,7 @@ | |||
| 60 | 60 | ||
| 61 | 61 | ||
| 62 | <div class="version"> | 62 | <div class="version"> |
| 63 | 0.2.1 | 63 | 0.2.6.2 |
| 64 | </div> | 64 | </div> |
| 65 | 65 | ||
| 66 | 66 | ||
| @@ -97,9 +97,10 @@ | |||
| 97 | <li class="toctree-l4"><a class="reference internal" href="#emqp-scheduler">eMQP / Scheduler</a></li> | 97 | <li class="toctree-l4"><a class="reference internal" href="#emqp-scheduler">eMQP / Scheduler</a></li> |
| 98 | <li class="toctree-l4"><a class="reference internal" href="#emqp-worker">eMQP / Worker</a></li> | 98 | <li class="toctree-l4"><a class="reference internal" href="#emqp-worker">eMQP / Worker</a></li> |
| 99 | <li class="toctree-l4"><a class="reference internal" href="#heartbeating">Heartbeating</a></li> | 99 | <li class="toctree-l4"><a class="reference internal" href="#heartbeating">Heartbeating</a></li> |
| 100 | <li class="toctree-l4"><a class="reference internal" href="#request-headers">REQUEST Headers</a></li> | 100 | <li class="toctree-l4"><a class="reference internal" href="#headers">Headers</a></li> |
| 101 | </ul> | 101 | </ul> |
| 102 | </li> | 102 | </li> |
| 103 | <li class="toctree-l3"><a class="reference internal" href="#disconnect-and-kbai">DISCONNECT and KBAI</a></li> | ||
| 103 | </ul> | 104 | </ul> |
| 104 | </li> | 105 | </li> |
| 105 | <li class="toctree-l2"><a class="reference external" href="https://github.com/enderlabs/eventmq">Source Code</a></li> | 106 | <li class="toctree-l2"><a class="reference external" href="https://github.com/enderlabs/eventmq">Source Code</a></li> |
| @@ -157,12 +158,12 @@ | |||
| 157 | <p><em>The status of this document is alpha and subject to heavy change</em></p> | 158 | <p><em>The status of this document is alpha and subject to heavy change</em></p> |
| 158 | <div class="section" id="goals"> | 159 | <div class="section" id="goals"> |
| 159 | <h2>Goals<a class="headerlink" href="#goals" title="Permalink to this headline">¶</a></h2> | 160 | <h2>Goals<a class="headerlink" href="#goals" title="Permalink to this headline">¶</a></h2> |
| 160 | <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> | 161 | <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.</p> |
| 161 | <p>The goals are to:</p> | 162 | <p>The goals are to:</p> |
| 162 | <blockquote> | 163 | <blockquote> |
| 163 | <div><ul class="simple"> | 164 | <div><ul class="simple"> |
| 164 | <li>Specify a protocol to follow when implementing a component to EventMQ.</li> | 165 | <li>Specify a protocol to follow when implementing a component to EventMQ.</li> |
| 165 | <li>Allow requests to be routed to workers by an abstracted service name.</li> | 166 | <li>Allow requests to be routed to workers by an abstracted service name (named queues).</li> |
| 166 | <li>Detect disconnected peers through heartbeating.</li> | 167 | <li>Detect disconnected peers through heartbeating.</li> |
| 167 | <li>Allow for message tracing and debugging.</li> | 168 | <li>Allow for message tracing and debugging.</li> |
| 168 | </ul> | 169 | </ul> |
| @@ -231,15 +232,12 @@ | |||
| 231 | </tr> | 232 | </tr> |
| 232 | </tbody> | 233 | </tbody> |
| 233 | </table> | 234 | </table> |
| 234 | </div> | 235 | <p>A <strong>REPLY</strong> frame consists of a 5-frame multipart message, formatted as follows.</p> |
| 235 | <div class="section" id="emqp-client"> | ||
| 236 | <h3>eMQP / Client<a class="headerlink" href="#emqp-client" title="Permalink to this headline">¶</a></h3> | ||
| 237 | <p>A <strong>REQUEST</strong> command consists of a 7-frame multipart message, formatted as follows.</p> | ||
| 238 | <table border="1" class="docutils"> | 236 | <table border="1" class="docutils"> |
| 239 | <colgroup> | 237 | <colgroup> |
| 240 | <col width="8%" /> | 238 | <col width="13%" /> |
| 241 | <col width="20%" /> | 239 | <col width="31%" /> |
| 242 | <col width="72%" /> | 240 | <col width="56%" /> |
| 243 | </colgroup> | 241 | </colgroup> |
| 244 | <thead valign="bottom"> | 242 | <thead valign="bottom"> |
| 245 | <tr class="row-odd"><th class="head">FRAME</th> | 243 | <tr class="row-odd"><th class="head">FRAME</th> |
| @@ -257,7 +255,7 @@ | |||
| 257 | <td>Protocol version</td> | 255 | <td>Protocol version</td> |
| 258 | </tr> | 256 | </tr> |
| 259 | <tr class="row-even"><td>2</td> | 257 | <tr class="row-even"><td>2</td> |
| 260 | <td>REQUEST</td> | 258 | <td>REPLY</td> |
| 261 | <td>command</td> | 259 | <td>command</td> |
| 262 | </tr> | 260 | </tr> |
| 263 | <tr class="row-odd"><td>3</td> | 261 | <tr class="row-odd"><td>3</td> |
| @@ -265,25 +263,17 @@ | |||
| 265 | <td>A unique id for the msg</td> | 263 | <td>A unique id for the msg</td> |
| 266 | </tr> | 264 | </tr> |
| 267 | <tr class="row-even"><td>4</td> | 265 | <tr class="row-even"><td>4</td> |
| 268 | <td>_QUEUE_NAME_</td> | ||
| 269 | <td>the name of the queue the request should be sent to</td> | ||
| 270 | </tr> | ||
| 271 | <tr class="row-odd"><td>5</td> | ||
| 272 | <td>_HEADERS_</td> | ||
| 273 | <td>dictionary of headers. can be an empty set</td> | ||
| 274 | </tr> | ||
| 275 | <tr class="row-even"><td>6</td> | ||
| 276 | <td>_MSG_</td> | 266 | <td>_MSG_</td> |
| 277 | <td>The message to send</td> | 267 | <td>The reply to respond with</td> |
| 278 | </tr> | 268 | </tr> |
| 279 | </tbody> | 269 | </tbody> |
| 280 | </table> | 270 | </table> |
| 281 | <p>A <strong>PUBLISH</strong> command consists of a 7-frame multipart messag, formatted as follows.</p> | 271 | <p>A <strong>HEARTBEAT</strong> frame consists of a</p> |
| 282 | <table border="1" class="docutils"> | 272 | <table border="1" class="docutils"> |
| 283 | <colgroup> | 273 | <colgroup> |
| 284 | <col width="7%" /> | 274 | <col width="14%" /> |
| 285 | <col width="17%" /> | 275 | <col width="33%" /> |
| 286 | <col width="75%" /> | 276 | <col width="53%" /> |
| 287 | </colgroup> | 277 | </colgroup> |
| 288 | <thead valign="bottom"> | 278 | <thead valign="bottom"> |
| 289 | <tr class="row-odd"><th class="head">FRAME</th> | 279 | <tr class="row-odd"><th class="head">FRAME</th> |
| @@ -301,7 +291,7 @@ | |||
| 301 | <td>Protocol version</td> | 291 | <td>Protocol version</td> |
| 302 | </tr> | 292 | </tr> |
| 303 | <tr class="row-even"><td>2</td> | 293 | <tr class="row-even"><td>2</td> |
| 304 | <td>PUBLISH</td> | 294 | <td>HEARTBEAT</td> |
| 305 | <td>command</td> | 295 | <td>command</td> |
| 306 | </tr> | 296 | </tr> |
| 307 | <tr class="row-odd"><td>3</td> | 297 | <tr class="row-odd"><td>3</td> |
| @@ -309,25 +299,17 @@ | |||
| 309 | <td>A unique id for the msg</td> | 299 | <td>A unique id for the msg</td> |
| 310 | </tr> | 300 | </tr> |
| 311 | <tr class="row-even"><td>4</td> | 301 | <tr class="row-even"><td>4</td> |
| 312 | <td>_TOPIC_NAME_</td> | 302 | <td>_UNIX_TS_</td> |
| 313 | <td>the name of the topic this message should be published across</td> | 303 | <td>A unix timestamp</td> |
| 314 | </tr> | ||
| 315 | <tr class="row-odd"><td>5</td> | ||
| 316 | <td>_HEADERS_</td> | ||
| 317 | <td>csv list of headers</td> | ||
| 318 | </tr> | ||
| 319 | <tr class="row-even"><td>6</td> | ||
| 320 | <td>_MSG_</td> | ||
| 321 | <td>The message to send</td> | ||
| 322 | </tr> | 304 | </tr> |
| 323 | </tbody> | 305 | </tbody> |
| 324 | </table> | 306 | </table> |
| 325 | <p>A <strong>SCHEDULE</strong> command consists of a 7-frame multipart message, formatted as follows.</p> | 307 | <p>A <strong>DISCONNECT</strong> frame consists of</p> |
| 326 | <table border="1" class="docutils"> | 308 | <table border="1" class="docutils"> |
| 327 | <colgroup> | 309 | <colgroup> |
| 328 | <col width="10%" /> | 310 | <col width="14%" /> |
| 329 | <col width="23%" /> | 311 | <col width="33%" /> |
| 330 | <col width="67%" /> | 312 | <col width="53%" /> |
| 331 | </colgroup> | 313 | </colgroup> |
| 332 | <thead valign="bottom"> | 314 | <thead valign="bottom"> |
| 333 | <tr class="row-odd"><th class="head">FRAME</th> | 315 | <tr class="row-odd"><th class="head">FRAME</th> |
| @@ -345,28 +327,51 @@ | |||
| 345 | <td>Protocol version</td> | 327 | <td>Protocol version</td> |
| 346 | </tr> | 328 | </tr> |
| 347 | <tr class="row-even"><td>2</td> | 329 | <tr class="row-even"><td>2</td> |
| 348 | <td>SCHEDULE</td> | 330 | <td>DISCONNECT</td> |
| 349 | <td>command</td> | 331 | <td>command</td> |
| 350 | </tr> | 332 | </tr> |
| 351 | <tr class="row-odd"><td>3</td> | 333 | <tr class="row-odd"><td>3</td> |
| 352 | <td>_MSGID_</td> | 334 | <td>_MSGID_</td> |
| 353 | <td>A unique id for the msg</td> | 335 | <td>A unique id for the msg</td> |
| 354 | </tr> | 336 | </tr> |
| 355 | <tr class="row-even"><td>4</td> | 337 | </tbody> |
| 356 | <td>_QUEUE_NAME_</td> | 338 | </table> |
| 357 | <td>name of queue that the job should run in</td> | 339 | <p>A <strong>KBAI</strong> frame consists of</p> |
| 340 | <table border="1" class="docutils"> | ||
| 341 | <colgroup> | ||
| 342 | <col width="14%" /> | ||
| 343 | <col width="33%" /> | ||
| 344 | <col width="53%" /> | ||
| 345 | </colgroup> | ||
| 346 | <thead valign="bottom"> | ||
| 347 | <tr class="row-odd"><th class="head">FRAME</th> | ||
| 348 | <th class="head">Value</th> | ||
| 349 | <th class="head">Description</th> | ||
| 358 | </tr> | 350 | </tr> |
| 359 | <tr class="row-odd"><td>5</td> | 351 | </thead> |
| 360 | <td>_HEADERS_</td> | 352 | <tbody valign="top"> |
| 361 | <td>csv list of headers for this message</td> | 353 | <tr class="row-even"><td>0</td> |
| 354 | <td>_EMPTY_</td> | ||
| 355 | <td>leave empty</td> | ||
| 362 | </tr> | 356 | </tr> |
| 363 | <tr class="row-even"><td>6</td> | 357 | <tr class="row-odd"><td>1</td> |
| 364 | <td>_MSG_</td> | 358 | <td>eMQP/1.0</td> |
| 365 | <td>The message to send</td> | 359 | <td>Protocol version</td> |
| 360 | </tr> | ||
| 361 | <tr class="row-even"><td>2</td> | ||
| 362 | <td>KBAI</td> | ||
| 363 | <td>command</td> | ||
| 364 | </tr> | ||
| 365 | <tr class="row-odd"><td>3</td> | ||
| 366 | <td>_MSGID_</td> | ||
| 367 | <td>A unique id for the msg</td> | ||
| 366 | </tr> | 368 | </tr> |
| 367 | </tbody> | 369 | </tbody> |
| 368 | </table> | 370 | </table> |
| 369 | <p>An <strong>UNSCHEDULE</strong> command consists of a 7-frame multipart message, formatted as follows.</p> | 371 | </div> |
| 372 | <div class="section" id="emqp-client"> | ||
| 373 | <h3>eMQP / Client<a class="headerlink" href="#emqp-client" title="Permalink to this headline">¶</a></h3> | ||
| 374 | <p>A <strong>REQUEST</strong> command consists of a 7-frame multipart message, formatted as follows.</p> | ||
| 370 | <table border="1" class="docutils"> | 375 | <table border="1" class="docutils"> |
| 371 | <colgroup> | 376 | <colgroup> |
| 372 | <col width="8%" /> | 377 | <col width="8%" /> |
| @@ -389,7 +394,7 @@ | |||
| 389 | <td>Protocol version</td> | 394 | <td>Protocol version</td> |
| 390 | </tr> | 395 | </tr> |
| 391 | <tr class="row-even"><td>2</td> | 396 | <tr class="row-even"><td>2</td> |
| 392 | <td>UNSCHEDULE</td> | 397 | <td>REQUEST</td> |
| 393 | <td>command</td> | 398 | <td>command</td> |
| 394 | </tr> | 399 | </tr> |
| 395 | <tr class="row-odd"><td>3</td> | 400 | <tr class="row-odd"><td>3</td> |
| @@ -398,11 +403,11 @@ | |||
| 398 | </tr> | 403 | </tr> |
| 399 | <tr class="row-even"><td>4</td> | 404 | <tr class="row-even"><td>4</td> |
| 400 | <td>_QUEUE_NAME_</td> | 405 | <td>_QUEUE_NAME_</td> |
| 401 | <td>ignored for this command, broadcasted to all queues</td> | 406 | <td>the name of the queue the request should be sent to</td> |
| 402 | </tr> | 407 | </tr> |
| 403 | <tr class="row-odd"><td>5</td> | 408 | <tr class="row-odd"><td>5</td> |
| 404 | <td>_HEADERS_</td> | 409 | <td>_HEADERS_</td> |
| 405 | <td>csv list of headers for this message</td> | 410 | <td>dictionary of headers. can be an empty set</td> |
| 406 | </tr> | 411 | </tr> |
| 407 | <tr class="row-even"><td>6</td> | 412 | <tr class="row-even"><td>6</td> |
| 408 | <td>_MSG_</td> | 413 | <td>_MSG_</td> |
| @@ -410,15 +415,12 @@ | |||
| 410 | </tr> | 415 | </tr> |
| 411 | </tbody> | 416 | </tbody> |
| 412 | </table> | 417 | </table> |
| 413 | </div> | 418 | <p>A <strong>PUBLISH</strong> command consists of a 7-frame multipart messag, formatted as follows.</p> |
| 414 | <div class="section" id="emqp-scheduler"> | ||
| 415 | <h3>eMQP / Scheduler<a class="headerlink" href="#emqp-scheduler" title="Permalink to this headline">¶</a></h3> | ||
| 416 | <p>An <strong>INFORM</strong> command consists of a 6-frame multipart message, formatted as follows.</p> | ||
| 417 | <table border="1" class="docutils"> | 419 | <table border="1" class="docutils"> |
| 418 | <colgroup> | 420 | <colgroup> |
| 419 | <col width="13%" /> | 421 | <col width="7%" /> |
| 420 | <col width="29%" /> | 422 | <col width="17%" /> |
| 421 | <col width="58%" /> | 423 | <col width="75%" /> |
| 422 | </colgroup> | 424 | </colgroup> |
| 423 | <thead valign="bottom"> | 425 | <thead valign="bottom"> |
| 424 | <tr class="row-odd"><th class="head">FRAME</th> | 426 | <tr class="row-odd"><th class="head">FRAME</th> |
| @@ -436,7 +438,7 @@ | |||
| 436 | <td>Protocol version</td> | 438 | <td>Protocol version</td> |
| 437 | </tr> | 439 | </tr> |
| 438 | <tr class="row-even"><td>2</td> | 440 | <tr class="row-even"><td>2</td> |
| 439 | <td>INFORM</td> | 441 | <td>PUBLISH</td> |
| 440 | <td>command</td> | 442 | <td>command</td> |
| 441 | </tr> | 443 | </tr> |
| 442 | <tr class="row-odd"><td>3</td> | 444 | <tr class="row-odd"><td>3</td> |
| @@ -444,24 +446,25 @@ | |||
| 444 | <td>A unique id for the msg</td> | 446 | <td>A unique id for the msg</td> |
| 445 | </tr> | 447 | </tr> |
| 446 | <tr class="row-even"><td>4</td> | 448 | <tr class="row-even"><td>4</td> |
| 447 | <td> </td> | 449 | <td>_TOPIC_NAME_</td> |
| 448 | <td>Queues. Unused for scheduler</td> | 450 | <td>the name of the topic this message should be published across</td> |
| 449 | </tr> | 451 | </tr> |
| 450 | <tr class="row-odd"><td>5</td> | 452 | <tr class="row-odd"><td>5</td> |
| 451 | <td>scheduler</td> | 453 | <td>_HEADERS_</td> |
| 452 | <td>type of peer connecting</td> | 454 | <td>csv list of headers</td> |
| 455 | </tr> | ||
| 456 | <tr class="row-even"><td>6</td> | ||
| 457 | <td>_MSG_</td> | ||
| 458 | <td>The message to send</td> | ||
| 453 | </tr> | 459 | </tr> |
| 454 | </tbody> | 460 | </tbody> |
| 455 | </table> | 461 | </table> |
| 456 | </div> | 462 | <p>A <strong>SCHEDULE</strong> command consists of a 7-frame multipart message, formatted as follows.</p> |
| 457 | <div class="section" id="emqp-worker"> | ||
| 458 | <h3>eMQP / Worker<a class="headerlink" href="#emqp-worker" title="Permalink to this headline">¶</a></h3> | ||
| 459 | <p>An <strong>INFORM</strong> command consists of a 5-frame multipart message, formatted as follows.</p> | ||
| 460 | <table border="1" class="docutils"> | 463 | <table border="1" class="docutils"> |
| 461 | <colgroup> | 464 | <colgroup> |
| 462 | <col width="5%" /> | 465 | <col width="10%" /> |
| 463 | <col width="13%" /> | 466 | <col width="23%" /> |
| 464 | <col width="82%" /> | 467 | <col width="67%" /> |
| 465 | </colgroup> | 468 | </colgroup> |
| 466 | <thead valign="bottom"> | 469 | <thead valign="bottom"> |
| 467 | <tr class="row-odd"><th class="head">FRAME</th> | 470 | <tr class="row-odd"><th class="head">FRAME</th> |
| @@ -479,7 +482,7 @@ | |||
| 479 | <td>Protocol version</td> | 482 | <td>Protocol version</td> |
| 480 | </tr> | 483 | </tr> |
| 481 | <tr class="row-even"><td>2</td> | 484 | <tr class="row-even"><td>2</td> |
| 482 | <td>INFORM</td> | 485 | <td>SCHEDULE</td> |
| 483 | <td>command</td> | 486 | <td>command</td> |
| 484 | </tr> | 487 | </tr> |
| 485 | <tr class="row-odd"><td>3</td> | 488 | <tr class="row-odd"><td>3</td> |
| @@ -487,21 +490,25 @@ | |||
| 487 | <td>A unique id for the msg</td> | 490 | <td>A unique id for the msg</td> |
| 488 | </tr> | 491 | </tr> |
| 489 | <tr class="row-even"><td>4</td> | 492 | <tr class="row-even"><td>4</td> |
| 490 | <td>_QUEUES_</td> | 493 | <td>_QUEUE_NAME_</td> |
| 491 | <td>csv seperated arrays containing an int and a string for weight and name. e.g. [40, ‘email’]</td> | 494 | <td>name of queue that the job should run in</td> |
| 492 | </tr> | 495 | </tr> |
| 493 | <tr class="row-odd"><td>5</td> | 496 | <tr class="row-odd"><td>5</td> |
| 494 | <td>worker</td> | 497 | <td>_HEADERS_</td> |
| 495 | <td>type of peer connecting</td> | 498 | <td>csv list of headers for this message</td> |
| 499 | </tr> | ||
| 500 | <tr class="row-even"><td>6</td> | ||
| 501 | <td>_MSG_</td> | ||
| 502 | <td>The message to send</td> | ||
| 496 | </tr> | 503 | </tr> |
| 497 | </tbody> | 504 | </tbody> |
| 498 | </table> | 505 | </table> |
| 499 | <p>A <strong>READY</strong> frame consists of a 4-frame multipart message, formatted as follows.</p> | 506 | <p>An <strong>UNSCHEDULE</strong> command consists of a 7-frame multipart message, formatted as follows.</p> |
| 500 | <table border="1" class="docutils"> | 507 | <table border="1" class="docutils"> |
| 501 | <colgroup> | 508 | <colgroup> |
| 502 | <col width="14%" /> | 509 | <col width="8%" /> |
| 503 | <col width="33%" /> | 510 | <col width="20%" /> |
| 504 | <col width="53%" /> | 511 | <col width="72%" /> |
| 505 | </colgroup> | 512 | </colgroup> |
| 506 | <thead valign="bottom"> | 513 | <thead valign="bottom"> |
| 507 | <tr class="row-odd"><th class="head">FRAME</th> | 514 | <tr class="row-odd"><th class="head">FRAME</th> |
| @@ -519,21 +526,36 @@ | |||
| 519 | <td>Protocol version</td> | 526 | <td>Protocol version</td> |
| 520 | </tr> | 527 | </tr> |
| 521 | <tr class="row-even"><td>2</td> | 528 | <tr class="row-even"><td>2</td> |
| 522 | <td>READY</td> | 529 | <td>UNSCHEDULE</td> |
| 523 | <td>command</td> | 530 | <td>command</td> |
| 524 | </tr> | 531 | </tr> |
| 525 | <tr class="row-odd"><td>3</td> | 532 | <tr class="row-odd"><td>3</td> |
| 526 | <td>_MSGID_</td> | 533 | <td>_MSGID_</td> |
| 527 | <td>A unique id for the msg</td> | 534 | <td>A unique id for the msg</td> |
| 528 | </tr> | 535 | </tr> |
| 536 | <tr class="row-even"><td>4</td> | ||
| 537 | <td>_QUEUE_NAME_</td> | ||
| 538 | <td>ignored for this command, broadcasted to all queues</td> | ||
| 539 | </tr> | ||
| 540 | <tr class="row-odd"><td>5</td> | ||
| 541 | <td>_HEADERS_</td> | ||
| 542 | <td>csv list of headers for this message</td> | ||
| 543 | </tr> | ||
| 544 | <tr class="row-even"><td>6</td> | ||
| 545 | <td>_MSG_</td> | ||
| 546 | <td>The message to send</td> | ||
| 547 | </tr> | ||
| 529 | </tbody> | 548 | </tbody> |
| 530 | </table> | 549 | </table> |
| 531 | <p>A <strong>REPLY</strong> frame consists of a 5-frame multipart message, formatted as follows.</p> | 550 | </div> |
| 551 | <div class="section" id="emqp-scheduler"> | ||
| 552 | <h3>eMQP / Scheduler<a class="headerlink" href="#emqp-scheduler" title="Permalink to this headline">¶</a></h3> | ||
| 553 | <p>An <strong>INFORM</strong> command consists of a 6-frame multipart message, formatted as follows.</p> | ||
| 532 | <table border="1" class="docutils"> | 554 | <table border="1" class="docutils"> |
| 533 | <colgroup> | 555 | <colgroup> |
| 534 | <col width="13%" /> | 556 | <col width="13%" /> |
| 535 | <col width="31%" /> | 557 | <col width="29%" /> |
| 536 | <col width="56%" /> | 558 | <col width="58%" /> |
| 537 | </colgroup> | 559 | </colgroup> |
| 538 | <thead valign="bottom"> | 560 | <thead valign="bottom"> |
| 539 | <tr class="row-odd"><th class="head">FRAME</th> | 561 | <tr class="row-odd"><th class="head">FRAME</th> |
| @@ -551,7 +573,7 @@ | |||
| 551 | <td>Protocol version</td> | 573 | <td>Protocol version</td> |
| 552 | </tr> | 574 | </tr> |
| 553 | <tr class="row-even"><td>2</td> | 575 | <tr class="row-even"><td>2</td> |
| 554 | <td>REPLY</td> | 576 | <td>INFORM</td> |
| 555 | <td>command</td> | 577 | <td>command</td> |
| 556 | </tr> | 578 | </tr> |
| 557 | <tr class="row-odd"><td>3</td> | 579 | <tr class="row-odd"><td>3</td> |
| @@ -559,17 +581,24 @@ | |||
| 559 | <td>A unique id for the msg</td> | 581 | <td>A unique id for the msg</td> |
| 560 | </tr> | 582 | </tr> |
| 561 | <tr class="row-even"><td>4</td> | 583 | <tr class="row-even"><td>4</td> |
| 562 | <td>_MSG_</td> | 584 | <td> </td> |
| 563 | <td>The reply to respond with</td> | 585 | <td>Queues. Unused for scheduler</td> |
| 586 | </tr> | ||
| 587 | <tr class="row-odd"><td>5</td> | ||
| 588 | <td>scheduler</td> | ||
| 589 | <td>type of peer connecting</td> | ||
| 564 | </tr> | 590 | </tr> |
| 565 | </tbody> | 591 | </tbody> |
| 566 | </table> | 592 | </table> |
| 567 | <p>A <strong>HEARTBEAT</strong> frame consists of a</p> | 593 | </div> |
| 594 | <div class="section" id="emqp-worker"> | ||
| 595 | <h3>eMQP / Worker<a class="headerlink" href="#emqp-worker" title="Permalink to this headline">¶</a></h3> | ||
| 596 | <p>An <strong>INFORM</strong> command consists of a 5-frame multipart message, formatted as follows.</p> | ||
| 568 | <table border="1" class="docutils"> | 597 | <table border="1" class="docutils"> |
| 569 | <colgroup> | 598 | <colgroup> |
| 570 | <col width="14%" /> | 599 | <col width="5%" /> |
| 571 | <col width="33%" /> | 600 | <col width="13%" /> |
| 572 | <col width="53%" /> | 601 | <col width="82%" /> |
| 573 | </colgroup> | 602 | </colgroup> |
| 574 | <thead valign="bottom"> | 603 | <thead valign="bottom"> |
| 575 | <tr class="row-odd"><th class="head">FRAME</th> | 604 | <tr class="row-odd"><th class="head">FRAME</th> |
| @@ -587,7 +616,7 @@ | |||
| 587 | <td>Protocol version</td> | 616 | <td>Protocol version</td> |
| 588 | </tr> | 617 | </tr> |
| 589 | <tr class="row-even"><td>2</td> | 618 | <tr class="row-even"><td>2</td> |
| 590 | <td>HEARTBEAT</td> | 619 | <td>INFORM</td> |
| 591 | <td>command</td> | 620 | <td>command</td> |
| 592 | </tr> | 621 | </tr> |
| 593 | <tr class="row-odd"><td>3</td> | 622 | <tr class="row-odd"><td>3</td> |
| @@ -595,12 +624,16 @@ | |||
| 595 | <td>A unique id for the msg</td> | 624 | <td>A unique id for the msg</td> |
| 596 | </tr> | 625 | </tr> |
| 597 | <tr class="row-even"><td>4</td> | 626 | <tr class="row-even"><td>4</td> |
| 598 | <td>_UNIX_TS_</td> | 627 | <td>_QUEUES_</td> |
| 599 | <td>A unix timestamp</td> | 628 | <td>csv seperated arrays containing an int and a string for weight and name. e.g. [40, ‘email’]</td> |
| 629 | </tr> | ||
| 630 | <tr class="row-odd"><td>5</td> | ||
| 631 | <td>worker</td> | ||
| 632 | <td>type of peer connecting</td> | ||
| 600 | </tr> | 633 | </tr> |
| 601 | </tbody> | 634 | </tbody> |
| 602 | </table> | 635 | </table> |
| 603 | <p>A <strong>DISCONNECT</strong> frame consists of</p> | 636 | <p>A <strong>READY</strong> frame consists of a 4-frame multipart message, formatted as follows.</p> |
| 604 | <table border="1" class="docutils"> | 637 | <table border="1" class="docutils"> |
| 605 | <colgroup> | 638 | <colgroup> |
| 606 | <col width="14%" /> | 639 | <col width="14%" /> |
| @@ -623,7 +656,7 @@ | |||
| 623 | <td>Protocol version</td> | 656 | <td>Protocol version</td> |
| 624 | </tr> | 657 | </tr> |
| 625 | <tr class="row-even"><td>2</td> | 658 | <tr class="row-even"><td>2</td> |
| 626 | <td>DISCONNECT</td> | 659 | <td>READY</td> |
| 627 | <td>command</td> | 660 | <td>command</td> |
| 628 | </tr> | 661 | </tr> |
| 629 | <tr class="row-odd"><td>3</td> | 662 | <tr class="row-odd"><td>3</td> |
| @@ -637,7 +670,7 @@ | |||
| 637 | <h3>Heartbeating<a class="headerlink" href="#heartbeating" title="Permalink to this headline">¶</a></h3> | 670 | <h3>Heartbeating<a class="headerlink" href="#heartbeating" title="Permalink to this headline">¶</a></h3> |
| 638 | <blockquote> | 671 | <blockquote> |
| 639 | <div><ul class="simple"> | 672 | <div><ul class="simple"> |
| 640 | <li>HEARTBEAT commands are valid at any time after an INFORM command</li> | 673 | <li>HEARTBEAT commands are valid at any time after an INFORM command.</li> |
| 641 | <li>Any command except DISCONNECT act as a heartbeat. Peers SHOULD NOT send HEARTBEAT commands while sending other commands.</li> | 674 | <li>Any command except DISCONNECT act as a heartbeat. Peers SHOULD NOT send HEARTBEAT commands while sending other commands.</li> |
| 642 | <li>Worker and broker MUST send heartbeats at regular and agreed-upon intervals.</li> | 675 | <li>Worker and broker MUST send heartbeats at regular and agreed-upon intervals.</li> |
| 643 | <li>Scheduler and broker MUST send heartbeats at regular and agreed-upon intervals.</li> | 676 | <li>Scheduler and broker MUST send heartbeats at regular and agreed-upon intervals.</li> |
| @@ -647,22 +680,24 @@ | |||
| 647 | </ul> | 680 | </ul> |
| 648 | </div></blockquote> | 681 | </div></blockquote> |
| 649 | </div> | 682 | </div> |
| 650 | <div class="section" id="request-headers"> | 683 | <div class="section" id="headers"> |
| 651 | <h3>REQUEST Headers<a class="headerlink" href="#request-headers" title="Permalink to this headline">¶</a></h3> | 684 | <h3>Headers<a class="headerlink" href="#headers" title="Permalink to this headline">¶</a></h3> |
| 652 | <p>Headers MUST be 0 to many comma seperated values inserted into the header field. If there are no headers required, send an empty string MUST be sent where headers are required.</p> | 685 | <p>Headers MUST be 0 to many comma seperated values inserted into the header field. If there are no headers required, an empty string MUST be sent where headers are required.</p> |
| 653 | <p>Below is a table which defines and describes the headers.</p> | 686 | <p>Below is a table which defines and describes the headers.</p> |
| 654 | <table border="1" class="docutils"> | 687 | <table border="1" class="docutils"> |
| 655 | <colgroup> | 688 | <colgroup> |
| 656 | <col width="9%" /> | 689 | <col width="8%" /> |
| 657 | <col width="4%" /> | 690 | <col width="3%" /> |
| 658 | <col width="4%" /> | 691 | <col width="3%" /> |
| 659 | <col width="4%" /> | 692 | <col width="4%" /> |
| 660 | <col width="78%" /> | 693 | <col width="3%" /> |
| 694 | <col width="79%" /> | ||
| 661 | </colgroup> | 695 | </colgroup> |
| 662 | <thead valign="bottom"> | 696 | <thead valign="bottom"> |
| 663 | <tr class="row-odd"><th class="head">Header</th> | 697 | <tr class="row-odd"><th class="head">Header</th> |
| 664 | <th class="head">REQUEST</th> | 698 | <th class="head">REQUEST</th> |
| 665 | <th class="head">PUBLISH</th> | 699 | <th class="head">PUBLISH</th> |
| 700 | <th class="head">SCHEDULE</th> | ||
| 666 | <th class="head">Default</th> | 701 | <th class="head">Default</th> |
| 667 | <th class="head">Description</th> | 702 | <th class="head">Description</th> |
| 668 | </tr> | 703 | </tr> |
| @@ -671,25 +706,53 @@ | |||
| 671 | <tr class="row-even"><td>reply-requested</td> | 706 | <tr class="row-even"><td>reply-requested</td> |
| 672 | <td>X</td> | 707 | <td>X</td> |
| 673 | <td> </td> | 708 | <td> </td> |
| 709 | <td> </td> | ||
| 674 | <td>False</td> | 710 | <td>False</td> |
| 675 | <td>Once the job is finished, send a reply back with information from the job. If there is no information reply with a True value.</td> | 711 | <td>Once the job is finished, send a reply back with information from the job. If there is no information reply with a True value.</td> |
| 676 | </tr> | 712 | </tr> |
| 677 | <tr class="row-odd"><td>retry-count:#</td> | 713 | <tr class="row-odd"><td>retry-count:#</td> |
| 678 | <td>X</td> | 714 | <td>X</td> |
| 679 | <td> </td> | 715 | <td> </td> |
| 716 | <td> </td> | ||
| 680 | <td>0</td> | 717 | <td>0</td> |
| 681 | <td>Retry a failed job this many times before accepting defeat.</td> | 718 | <td>Retry a failed job this many times before accepting defeat.</td> |
| 682 | </tr> | 719 | </tr> |
| 683 | <tr class="row-even"><td>guarantee</td> | 720 | <tr class="row-even"><td>guarantee</td> |
| 684 | <td>X</td> | 721 | <td>X</td> |
| 685 | <td> </td> | 722 | <td> </td> |
| 723 | <td> </td> | ||
| 686 | <td>False</td> | 724 | <td>False</td> |
| 687 | <td>Ensure the job completes by letting someone else worry about a success reply.</td> | 725 | <td>Ensure the job completes by letting someone else worry about a success reply.</td> |
| 688 | </tr> | 726 | </tr> |
| 727 | <tr class="row-odd"><td>nohaste</td> | ||
| 728 | <td> </td> | ||
| 729 | <td> </td> | ||
| 730 | <td>X</td> | ||
| 731 | <td>False</td> | ||
| 732 | <td>When scheduling a job, set this to True if you don’t want the job to run immediately as it’s scheduled. Instead, it will run for the first time when the interval has elapsed.</td> | ||
| 733 | </tr> | ||
| 689 | </tbody> | 734 | </tbody> |
| 690 | </table> | 735 | </table> |
| 691 | </div> | 736 | </div> |
| 692 | </div> | 737 | </div> |
| 738 | <div class="section" id="disconnect-and-kbai"> | ||
| 739 | <h2>DISCONNECT and KBAI<a class="headerlink" href="#disconnect-and-kbai" title="Permalink to this headline">¶</a></h2> | ||
| 740 | <dl class="docutils"> | ||
| 741 | <dt>When a component receives a DISCONNECT command it:</dt> | ||
| 742 | <dd><ul class="first last simple"> | ||
| 743 | <li>MUST send a KBAI command to all connected components.</li> | ||
| 744 | <li>MUST stop sending and receiving any messages</li> | ||
| 745 | <li>MUST allow any pending messages or jobs to complete.</li> | ||
| 746 | </ul> | ||
| 747 | </dd> | ||
| 748 | <dt>When a component receives a KBAI command it:</dt> | ||
| 749 | <dd><ul class="first last simple"> | ||
| 750 | <li>MUST stop sending any messages to the disconnecting component.</li> | ||
| 751 | <li>SHOULD Clean up references to the disconnecting component.</li> | ||
| 752 | </ul> | ||
| 753 | </dd> | ||
| 754 | </dl> | ||
| 755 | </div> | ||
| 693 | </div> | 756 | </div> |
| 694 | 757 | ||
| 695 | 758 | ||
diff --git a/py-modindex.html b/py-modindex.html index 43f24ef..181c5b3 100644 --- a/py-modindex.html +++ b/py-modindex.html | |||
| @@ -61,7 +61,7 @@ | |||
| 61 | 61 | ||
| 62 | 62 | ||
| 63 | <div class="version"> | 63 | <div class="version"> |
| 64 | 0.2.1 | 64 | 0.2.6.2 |
| 65 | </div> | 65 | </div> |
| 66 | 66 | ||
| 67 | 67 | ||
diff --git a/receiver.html b/receiver.html index ccce6d3..664c268 100644 --- a/receiver.html +++ b/receiver.html | |||
| @@ -61,7 +61,7 @@ | |||
| 61 | 61 | ||
| 62 | 62 | ||
| 63 | <div class="version"> | 63 | <div class="version"> |
| 64 | 0.2.1 | 64 | 0.2.6.2 |
| 65 | </div> | 65 | </div> |
| 66 | 66 | ||
| 67 | 67 | ||
diff --git a/router.html b/router.html index 86fe30d..ca90e13 100644 --- a/router.html +++ b/router.html | |||
| @@ -61,7 +61,7 @@ | |||
| 61 | 61 | ||
| 62 | 62 | ||
| 63 | <div class="version"> | 63 | <div class="version"> |
| 64 | 0.2.1 | 64 | 0.2.6.2 |
| 65 | </div> | 65 | </div> |
| 66 | 66 | ||
| 67 | 67 | ||
| @@ -226,6 +226,30 @@ self.queues</li> | |||
| 226 | </dd></dl> | 226 | </dd></dl> |
| 227 | 227 | ||
| 228 | <dl class="method"> | 228 | <dl class="method"> |
| 229 | <dt id="eventmq.router.Router.get_status"> | ||
| 230 | <code class="descname">get_status</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.get_status" title="Permalink to this definition">¶</a></dt> | ||
| 231 | <dd><dl class="docutils"> | ||
| 232 | <dt>Return</dt> | ||
| 233 | <dd>(str) Serialized information about the current state of the router.</dd> | ||
| 234 | </dl> | ||
| 235 | </dd></dl> | ||
| 236 | |||
| 237 | <dl class="attribute"> | ||
| 238 | <dt id="eventmq.router.Router.job_latencies"> | ||
| 239 | <code class="descname">job_latencies</code><em class="property"> = None</em><a class="headerlink" href="#eventmq.router.Router.job_latencies" title="Permalink to this definition">¶</a></dt> | ||
| 240 | <dd><p>Latency tracking dictionary | ||
| 241 | Key: msgid of message each REQUEST received and forwarded to a worker | ||
| 242 | Value: (timestamp, queue_name)</p> | ||
| 243 | </dd></dl> | ||
| 244 | |||
| 245 | <dl class="method"> | ||
| 246 | <dt id="eventmq.router.Router.on_disconnect"> | ||
| 247 | <code class="descname">on_disconnect</code><span class="sig-paren">(</span><em>msgid</em>, <em>msg</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.on_disconnect" title="Permalink to this definition">¶</a></dt> | ||
| 248 | <dd><p>Prepare router for disconnecting by removing schedulers, clearing | ||
| 249 | worker queue (if needed), and removing workers.</p> | ||
| 250 | </dd></dl> | ||
| 251 | |||
| 252 | <dl class="method"> | ||
| 229 | <dt id="eventmq.router.Router.on_heartbeat"> | 253 | <dt id="eventmq.router.Router.on_heartbeat"> |
| 230 | <code class="descname">on_heartbeat</code><span class="sig-paren">(</span><em>sender</em>, <em>msgid</em>, <em>msg</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.on_heartbeat" title="Permalink to this definition">¶</a></dt> | 254 | <code class="descname">on_heartbeat</code><span class="sig-paren">(</span><em>sender</em>, <em>msgid</em>, <em>msg</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.on_heartbeat" title="Permalink to this definition">¶</a></dt> |
| 231 | <dd><p>a placeholder for a no-op command. The actual ‘logic’ for HEARTBEAT is | 255 | <dd><p>a placeholder for a no-op command. The actual ‘logic’ for HEARTBEAT is |
| @@ -260,6 +284,13 @@ and announces itself.</p> | |||
| 260 | </dd></dl> | 284 | </dd></dl> |
| 261 | 285 | ||
| 262 | <dl class="method"> | 286 | <dl class="method"> |
| 287 | <dt id="eventmq.router.Router.on_reply"> | ||
| 288 | <code class="descname">on_reply</code><span class="sig-paren">(</span><em>sender</em>, <em>msgid</em>, <em>msg</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.on_reply" title="Permalink to this definition">¶</a></dt> | ||
| 289 | <dd><p>Handles an REPLY message. Replies are sent by the worker for latanecy | ||
| 290 | measurements</p> | ||
| 291 | </dd></dl> | ||
| 292 | |||
| 293 | <dl class="method"> | ||
| 263 | <dt id="eventmq.router.Router.on_request"> | 294 | <dt id="eventmq.router.Router.on_request"> |
| 264 | <code class="descname">on_request</code><span class="sig-paren">(</span><em>sender</em>, <em>msgid</em>, <em>msg</em>, <em>depth=1</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.on_request" title="Permalink to this definition">¶</a></dt> | 295 | <code class="descname">on_request</code><span class="sig-paren">(</span><em>sender</em>, <em>msgid</em>, <em>msg</em>, <em>depth=1</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.on_request" title="Permalink to this definition">¶</a></dt> |
| 265 | <dd><p>Process a client REQUEST frame</p> | 296 | <dd><p>Process a client REQUEST frame</p> |
| @@ -465,7 +496,7 @@ process receives a SIGHUP from the system.</p> | |||
| 465 | 496 | ||
| 466 | <dl class="method"> | 497 | <dl class="method"> |
| 467 | <dt id="eventmq.router.Router.start"> | 498 | <dt id="eventmq.router.Router.start"> |
| 468 | <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> | 499 | <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>, <em>administrative_addr='tcp://127.0.0.1:47293'</em><span class="sig-paren">)</span><a class="headerlink" href="#eventmq.router.Router.start" title="Permalink to this definition">¶</a></dt> |
| 469 | <dd><p>Begin listening for connections on the provided connection strings</p> | 500 | <dd><p>Begin listening for connections on the provided connection strings</p> |
| 470 | <table class="docutils field-list" frame="void" rules="none"> | 501 | <table class="docutils field-list" frame="void" rules="none"> |
| 471 | <col class="field-name" /> | 502 | <col class="field-name" /> |
| @@ -474,6 +505,8 @@ process receives a SIGHUP from the system.</p> | |||
| 474 | <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> | 505 | <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> |
| 475 | <li><strong>frontend_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 listen for requests</li> | 506 | <li><strong>frontend_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 listen for requests</li> |
| 476 | <li><strong>backend_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 listen for workers</li> | 507 | <li><strong>backend_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 listen for workers</li> |
| 508 | <li><strong>administrative_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 listen for emq-cli | ||
| 509 | commands on.</li> | ||
| 477 | </ul> | 510 | </ul> |
| 478 | </td> | 511 | </td> |
| 479 | </tr> | 512 | </tr> |
diff --git a/search.html b/search.html index c280580..ad81164 100644 --- a/search.html +++ b/search.html | |||
| @@ -58,7 +58,7 @@ | |||
| 58 | 58 | ||
| 59 | 59 | ||
| 60 | <div class="version"> | 60 | <div class="version"> |
| 61 | 0.2.1 | 61 | 0.2.6.2 |
| 62 | </div> | 62 | </div> |
| 63 | 63 | ||
| 64 | 64 | ||
diff --git a/searchindex.js b/searchindex.js index ab28224..fb8ebac 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","settings_file","using","utils/classes","utils/devices","utils/index","utils/messages","utils/settings","utils/timeutils"],objects:{"eventmq.client":{messages:[2,0,0,"-"]},"eventmq.client.messages":{build_module_path:[2,3,1,""],defer_job:[2,3,1,""],schedule:[2,3,1,""],send_request:[2,3,1,""],send_schedule_request:[2,3,1,""]},"eventmq.exceptions":{EventMQError:[4,5,1,""],InvalidMessageError:[4,5,1,""],MessageError:[4,5,1,""],NoAvailableWorkerSlotsError:[4,5,1,""],PeerGoneAwayError:[4,5,1,""],UnknownQueueError:[4,5,1,""]},"eventmq.jobmanager":{JobManager:[6,4,1,""]},"eventmq.jobmanager.JobManager":{"__init__":[6,2,1,""],concurrent_jobs:[6,1,1,""],jobmanager_main:[6,2,1,""],name:[6,1,1,""],on_heartbeat:[6,2,1,""],on_request:[6,2,1,""],outgoing:[6,1,1,""],queues:[6,1,1,""],send_ready:[6,2,1,""]},"eventmq.poller":{Poller:[7,4,1,""]},"eventmq.poller.Poller":{"__init__":[7,2,1,""],poll:[7,2,1,""],register:[7,2,1,""],unregister:[7,2,1,""]},"eventmq.receiver":{Receiver:[9,4,1,""]},"eventmq.receiver.Receiver":{"__init__":[9,2,1,""],connect:[9,2,1,""],listen:[9,2,1,""],name:[9,1,1,""],ready:[9,1,1,""],unbind:[9,2,1,""],zcontext:[9,1,1,""],zsocket:[9,1,1,""]},"eventmq.router":{Router:[10,4,1,""]},"eventmq.router.Router":{add_scheduler:[10,2,1,""],add_worker:[10,2,1,""],clean_up_dead_schedulers:[10,2,1,""],clean_up_dead_workers:[10,2,1,""],get_available_worker:[10,2,1,""],on_heartbeat:[10,2,1,""],on_inform:[10,2,1,""],on_ready:[10,2,1,""],on_request:[10,2,1,""],prioritize_queue_list:[10,6,1,""],process_client_message:[10,2,1,""],process_worker_message:[10,2,1,""],queues:[10,1,1,""],received_disconnect:[10,1,1,""],requeue_worker:[10,2,1,""],reset_heartbeat_counters:[10,2,1,""],router_main:[10,2,1,""],scheduler_queue:[10,1,1,""],schedulers:[10,1,1,""],send_ack:[10,2,1,""],send_heartbeat:[10,2,1,""],send_schedulers_heartbeats:[10,2,1,""],send_workers_heartbeats:[10,2,1,""],sighup_handler:[10,2,1,""],start:[10,2,1,""],waiting_messages:[10,1,1,""],workers:[10,1,1,""]},"eventmq.sender":{Sender:[11,4,1,""]},"eventmq.sender.Sender":{"__init__":[11,2,1,""],connect:[11,2,1,""],listen:[11,2,1,""],name:[11,1,1,""],ready:[11,1,1,""],rebuild:[11,2,1,""],unbind:[11,2,1,""],zcontext:[11,1,1,""],zsocket:[11,1,1,""]},"eventmq.utils":{classes:[14,0,0,"-"],devices:[15,0,0,"-"],messages:[17,0,0,"-"],random_characters:[16,3,1,""],settings:[18,0,0,"-"],timeutils:[19,0,0,"-"],tuplify:[16,3,1,""],zero_index_cmp:[16,3,1,""]},"eventmq.utils.classes":{EMQPService:[14,4,1,""],EMQdeque:[14,4,1,""],HeartbeatMixin:[14,4,1,""],ZMQReceiveMixin:[14,4,1,""],ZMQSendMixin:[14,4,1,""]},"eventmq.utils.classes.EMQPService":{"__weakref__":[14,1,1,""],is_heartbeat_enabled:[14,1,1,""],on_ack:[14,2,1,""],process_message:[14,2,1,""],reset:[14,2,1,""],send_inform:[14,2,1,""],start:[14,2,1,""]},"eventmq.utils.classes.EMQdeque":{"__init__":[14,2,1,""],"__weakref__":[14,1,1,""],append:[14,2,1,""],appendleft:[14,2,1,""],extend:[14,2,1,""],is_empty:[14,2,1,""],is_full:[14,2,1,""],is_pfull:[14,2,1,""],pop:[14,2,1,""],popleft:[14,2,1,""],remove:[14,2,1,""]},"eventmq.utils.classes.HeartbeatMixin":{"__init__":[14,2,1,""],"__weakref__":[14,1,1,""],is_dead:[14,2,1,""],reset_heartbeat_counters:[14,2,1,""],send_heartbeat:[14,2,1,""]},"eventmq.utils.classes.ZMQReceiveMixin":{"__weakref__":[14,1,1,""],recv:[14,2,1,""],recv_multipart:[14,2,1,""]},"eventmq.utils.classes.ZMQSendMixin":{"__weakref__":[14,1,1,""],send:[14,2,1,""],send_multipart:[14,2,1,""]},"eventmq.utils.devices":{generate_device_name:[15,3,1,""]},"eventmq.utils.messages":{fwd_emqp_router_message:[17,3,1,""],generate_msgid:[17,3,1,""],parse_message:[17,3,1,""],parse_router_message:[17,3,1,""],send_emqp_message:[17,3,1,""],send_emqp_router_message:[17,3,1,""]},"eventmq.utils.settings":{import_settings:[18,3,1,""]},"eventmq.utils.timeutils":{IntervalIter:[19,4,1,""],monotonic:[19,3,1,""],seconds_until:[19,3,1,""],timestamp:[19,3,1,""]},"eventmq.utils.timeutils.IntervalIter":{"__init__":[19,2,1,""],"__weakref__":[19,1,1,""]},eventmq:{client:[1,0,0,"-"],exceptions:[4,0,0,"-"],jobmanager:[6,0,0,"-"],poller:[7,0,0,"-"],receiver:[9,0,0,"-"],router:[10,0,0,"-"],sender:[11,0,0,"-"],utils:[16,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","attribute","Python attribute"],"2":["py","method","Python method"],"3":["py","function","Python function"],"4":["py","class","Python class"],"5":["py","exception","Python exception"],"6":["py","classmethod","Python class method"]},objtypes:{"0":"py:module","1":"py:attribute","2":"py:method","3":"py:function","4":"py:class","5":"py:exception","6":"py:classmethod"},terms:{"0mq":[8,14],"5min":19,"__init__":[6,7,9,11,14,19],"__weakref__":[14,19],"_empty_":8,"_headers_":8,"_issu":[],"_msg_":8,"_msgid_":8,"_queue_name_":8,"_queues_":8,"_recipient_id":14,"_sourc":[],"_topic_name_":8,"_unix_ts_":8,"abstract":8,"boolean":14,"case":[8,14,19],"class":[],"default":[2,6,8,9,10,11,12,14],"float":[14,19],"function":2,"import":[2,3,6,10,12,18],"int":[2,7,8,10,14,19],"long":[7,14],"new":[10,14],"public":8,"return":[2,3,7,9,10,11,14,15,16,17,19],"short":10,"true":[8,9,10,11,14],"while":8,abl:[10,12],about:[6,8,10],absolut:3,accept:[8,12,14],account:[10,17],ack:[8,10],ackd_msgid:14,acknowledg:[8,10],across:8,act:[1,8],activ:[],active_job:[],actual:[6,10],add:10,add_schedul:10,add_work:10,addr:[9,11,14],address:[],after:8,agre:8,all:[2,4,6,8,9,10,11,14],allow:8,alon:[],alpha:8,alreadi:10,also:14,alwai:2,and_data:17,ani:[2,8,10,16],announc:10,anoth:[6,10,12],anyth:12,api:[],app:14,appear:7,append:14,appendleft:14,appened:10,appli:18,applic:[2,8],architectur:[],aren:[],arg2:2,arg3:2,arg:[2,6,7,9,10,11,14],argument:14,arithmet:19,around:[],arrai:8,ascii:15,assign:12,assum:19,attempt:[4,10],attr:7,automat:14,avail:[4,10],available_slot:10,available_work:[],awaiting_ack:14,back:[8,10,14],backend_addr:10,backward:14,base:[4,7,12,14],basi:8,becaus:[10,14],becom:12,been:[2,10,14],befor:[2,7,8],begin:[10,12,14],belong:10,below:8,best:2,between:[2,8],bin:[],block:12,bool:[2,6,9,11,14],boot:19,both:[7,8],box:12,broadcast:8,broker:[6,8,14],broker_addr:6,buffer:10,build:[2,10,11],build_module_path:2,built:8,bulid:9,busi:[],calcul:19,call:[7,10,14],callabl:[2,6,9],callback:14,can:[1,2,8,10,14,15,17],captur:14,care:15,caus:15,certain:14,chang:8,charact:16,check:[9,11,14],choos:12,circuit:10,class_arg:[2,6],class_kwarg:[2,6],classmethod:10,clean_up_dead_schedul:10,clean_up_dead_work:10,client:[],clock:19,close:[14,19],cmp:16,code:[3,5,14],collect:14,colon:[2,12],column:[],com:[],come:[2,10],comma:8,command:[2,6,8,10,14,17],compar:16,compat:14,complet:8,compon:8,concurr:12,conf:12,config:12,configur:[2,10,18],connction:[9,11],connect:[6,8,9,10,11,14,17],consist:8,contact:4,contain:[1,8,10,14,16],content:[],context:[9,11],control:12,contruct:14,convers:8,convert:16,convienc:[7,14],core:12,correctli:[],count:[6,8,10,19],counter:[10,14],cpu:12,creat:[10,11,16],cron:2,cross:[],csv:8,current:[9,11,14],custom:10,cycl:12,data:[10,17],data_process:12,deal:16,dealer:11,death:14,debug:8,decor:[],decrypt:[],decsend:10,def:[],defeat:8,defer:2,defer_job:2,defin:[2,6,8,9,11,14,19],deliv:8,denot:2,depth:10,dequ:14,describ:8,descript:8,detail:8,detect:8,determin:8,devic:[],dialog:8,dict:[2,6,7],dictionari:[7,8,10],did:[],die:10,differ:3,directli:[7,14],disabl:2,disconnect:[8,9],distribut:8,doe:14,doesn:7,don:6,dot:2,down:[12,19],dst:19,duplic:10,dure:11,each:[],effici:12,effort:2,either:[8,14],element:[10,14],els:[3,8],email:[8,12],empti:[8,17],emqdequ:14,emqp:[],emqpservic:14,enabl:[2,14],encod:15,encount:[2,4],end:[2,14],enderlab:[],ensur:[2,6,8,14],entri:10,equal:12,error:[2,14,15],etc:[10,12],evalu:2,even:8,event:[7,14],eventloop:[],eventmqerror:4,everi:[2,6],everyth:15,exampl:[10,12,14,19],except:[],exectu:10,execut:[2,8,12,19],exist:[4,6],explicitli:[12,14],expos:6,extend:14,extra:8,fail:[2,8],failur:2,fair:8,fals:[2,8,9,11,14],featur:15,few:3,field:8,file:12,find:14,finish:[8,10],first:[8,10,14,17],fit:8,flag:[2,7],follow:[2,8,14],form:14,format:[2,6,8,10,17],forward:[14,17],found:[4,10,12],foundat:8,frame:[],free:8,from:[4,7,8,9,10,11,14,19],frontend_addr:10,full:14,func:[2,6,14],fwd_emqp_router_messag:17,gener:[6,7,8,9,11,17],generate_device_nam:15,generate_msgid:17,get_available_work:10,github:[],give:2,given:10,gmtime:[],gnu:8,goal:[],good:14,group:12,guarante:[2,8],guarente:2,hand:16,handl:[6,8,10,14],handler:6,happen:[2,7,10,11],hard:14,hasn:10,have:[2,12,14,17],haven:10,header:[],heartbeat:[],heartbeat_timeout:10,heartbeati:14,heartbeatmixin:14,heavi:8,help:12,helper:14,here:[8,10],high:[],highest:12,hit:14,home:[],hope:8,how:[2,7],html:8,http:8,ident:[8,15],identifi:10,ietf:8,ignor:[8,14],immedi:2,immediatli:2,implement:[8,14],impli:8,import_set:18,includ:[2,8,14],incom:[],index:[5,10,16],indexerror:10,indiviud:12,inform:[6,8,10,14],inform_typ:[],inherit:4,ini:[12,18],initi:[2,14],insert:[8,14],instal:3,instanc:6,instanti:[2,6],integ:10,intens:12,interest:16,intern:4,interpret:8,interv:[2,8,19],interval_min:[],interval_sec:[2,19],intervalit:19,intes:[],invalidmessageerror:[4,10],is_dead:14,is_empti:14,is_ful:14,is_heartbeat_en:14,is_pful:14,isn:[10,14],issu:[3,5,8],item:14,iter:[7,10,14],iterat:14,itself:10,job:[],job_schedul:2,jobmanag:[],jobmanager_main:6,keep:[6,10],kei:[7,8,10],kick:[6,10],know:[2,6,10],kwarg2:2,kwarg:[2,6,7,9,10,11,14],languag:[],larg:12,larger:12,largest:10,last:[2,10,14],last_recv_heartbeat:10,later:8,least:[8,14],leav:[8,12],left:14,length:[14,16],lesser:8,let:8,lib:[],licens:[],like:[6,14,16],limit:14,list:[2,4,6,8,10,12,14,16,19],listen:[6,9,10,11,12,14],load:12,local:12,locat:2,log:[2,6,10],logic:[6,10],longer:[4,12],look:14,loop:[7,10,14],lot:12,low:[],lower:10,mai:[8,10,14],main:6,make:16,malform:4,manag:[],mani:[2,8,11],manual:8,master:8,match:14,med:[],member:10,memebership:10,merchant:8,mess:19,messag:[],message_bodi:17,message_id:17,messageerror:4,met:14,meta:[10,17],method:[2,6,7,10,14],minut:2,mod:[],mode:[],model:12,modifi:8,modul:[1,2,5,6,16],monoton:[10,14,19],more:[8,14,16],most:14,msg:[6,8,10,14,17],msg_id:[],msgid:[6,10,14],multipart:[8,14],multiprocess:[6,12],must:[8,14],name:[2,6,8,9,10,11,12,18],need:[10,11],never:19,next:[7,10,12,19],noavailableworkerslotserror:[4,10],none:[2,6,9,10,11,14,15,17],noop:6,normal:14,note:[6,9,11],notifi:14,now:14,number:[10,12,19],numer:19,obj:10,object:[7,14,16,19],occur:14,off:[6,10],on_ack:14,on_command:[10,14],on_emqp_command:14,on_ful:14,on_heartbeat:[6,10],on_inform:10,on_readi:10,on_receive_repli:[],on_receive_request:[],on_recv:9,on_request:[6,10],on_schedul:14,onc:8,onli:[],onlin:[10,14],option:[2,6,8,9,11,17],order:10,org:8,orient:8,origin:8,original_msg:10,other:[2,8,12],otherwis:[6,9,11,14],out:[6,14],outgo:[6,14],overwhelm:[],own:14,packag:[],page:5,param:2,paramet:[2,6,7,9,10,11,14,15,16,17,18,19],pars:[10,14,17],parse_messag:17,parse_router_messag:17,part:[8,17],particular:[8,11],pass:[2,8,9,14],path:[2,6],payload:17,peer:[4,8,14],peergoneawayerror:[4,10],per:10,pfull:14,philosophi:[],pictur:8,pip:[],placehold:[6,10],point:12,poll:7,poller:[],pollin:7,pollout:7,pool:[8,10],pop:[10,14],popleft:14,port:10,portion:6,possibl:3,practic:14,prefix:[15,17],prepend:8,pretti:[8,12],primari:[],priorit:10,prioriti:10,prioritiess:10,prioritize_queue_list:10,problem:4,process:[8,10,11,12,14],process_client_messag:10,process_messag:[6,14],process_worker_messag:10,programm:14,prop:[],proper:14,properti:[9,11,14],protocol:[],protocol_vers:14,provid:[10,14],pub:8,publish:8,purpos:8,push_notif:14,py2:19,py3:19,python2:[],python3:15,python:14,queu:[],queue:[],queue_messag:[],queue_nam:10,quick:[],rais:[2,4,9,10,11,14,17],random:[16,17],random_charact:16,raw:14,raw_messag:[],readi:[6,8,9,10,11,12,14],rebind:10,rebuild:11,receiv:[],received_disconnect:10,recent:[8,10],reciev:[],recip:[],recipi:[10,14,17],recipient_id:17,recommend:[8,12,14],reconnect:11,recurs:[10,16],recus:10,recv:14,recv_multipart:14,redistribut:8,refer:[6,14,19],regist:[6,7,10],regular:8,reject:14,rel:3,reliabl:8,reload:10,remain:7,remot:14,remov:[8,10,14],reopen:14,rep:9,repli:[2,6,8,17],reply_request:2,repres:19,req:11,request:[],request_queu:[],requeue_work:10,requir:8,requri:[],reset:[10,14],reset_heartbeat_count:[10,14],resourc:[6,8],respond:[8,10,14],respons:[6,9,10,11],restart:[8,11],retri:[2,8,10],retry_count:2,rfc2119:8,rfc:8,right:14,robin:8,roughli:11,round:8,rout:[8,10],router:[],router_main:10,run:[2,6,8,10,12,14],safe:12,sake:19,same:[11,16],schedul:[],scheduler_id:10,scheduler_queu:10,scheduler_zmq_id:10,search:5,second:19,seconds_until:19,section:18,see:[7,8,10,14],self:[6,10,11,14],semi:12,send:[2,4,6,8,10,11,14,17],send_ack:10,send_emqp_messag:17,send_emqp_router_messag:17,send_heartbeat:[10,14],send_inform:14,send_messag:[],send_multipart:14,send_raw:[],send_readi:6,send_request:2,send_schedule_request:2,send_schedulers_heartbeat:10,send_workers_heartbeat:10,sender:[],sender_id:17,sent:[2,8,10,12,14],seper:[2,8,12],serv:8,server:[6,8,12],servic:[8,14],service_typ:14,set:[],setup:[],shall:8,shalt:[],should:[2,4,7,8,9,10,11,12,14,17],shown:8,sighup:10,sighup_handl:10,signal:6,signum:10,similar:12,simpl:[10,16],sinc:19,singl:[8,14],site:[],size:14,skip:[11,14],skip_sign:6,skip_zmqstream:11,slot:10,slow:12,smaller:12,socket:[2,7,8,9,10,11,14,15,17],softwar:8,some:[2,6,12,14,16,17],someon:8,someth:[2,11,12,14,19],somewher:3,sort:16,sourc:[3,5],spawn:6,specif:[],specifi:[8,14,16],standard:12,start:[],start_valu:19,state:14,statu:8,still:[10,12],stop:8,store:10,str:[2,6,9,10,11,14,15,16,17,18],string:[2,8,9,10,11,14,15,17],structur:4,sub:8,subclass:4,subcmd:6,subcommand:[2,6],subject:8,subsequ:[],subset:8,subtract:19,success:8,successfulli:14,support:14,system:[3,10],take:[10,11,14,15,17],taken:[],task:[2,6],tcp:10,tell:6,term:8,test:6,than:[],thei:[2,14],them:9,thi:[1,2,4,6,7,8,9,10,11,12,14,15,16,17,19],thier:12,thing:[2,6,11,12,14,16,17],thou:[],thread:12,threshold:14,through:[8,10],thy:[],time:[],timeout:7,timestamp:[8,10,19],timeutil:[],timezon:[],tip:3,tool:8,topic:8,topolog:[],tornado:[],trace:8,track:[6,10,14],tri:2,tune:12,tupl:[6,7,10,14,16,17],tuplifi:16,type:[2,8,9,10,11,14,16,17],type_:14,typecast:7,typeerror:9,unabl:10,unbind:[9,11],undefin:7,under:8,unicod:15,uniqu:[6,8,10],unit:6,univers:[],unix:8,unknownqueueerror:[4,10],unless:[6,9,11],unprioritized_iter:10,unregist:7,unschedul:[2,8],until:[12,19],untouch:[10,17],unus:8,updat:14,upon:8,upstream:6,usag:19,usual:14,utilit:[],utlitii:14,uuid:[6,9,10,11],vagrant:[],valid:8,valu:[2,7,8,14,16,17,19],valueerror:14,variabl:14,version:[3,8,14],via:[2,19],virtualenv:[],wait:[2,7,12],waiting_messag:10,walk:6,want:[12,14],warn:10,warranti:8,weak:[14,19],web:8,weight:[8,12,14],well:8,went:[],when:[1,2,3,4,6,8,9,10,11,14,15,16],where:[2,8,10,14,19],which:[8,10,14,15],who:[1,10],wish:17,without:[8,11],word:8,work:[3,6,14],worker:[],worker_id:10,worri:8,would:[12,14,19],wrap:[],wrong:[],you:[3,8,10,11,12,14,17],your:[2,8,12,14],zcontext:[9,11],zero_index_cmp:16,zeromq:8,zmq:[7,8,9,10,11,14,15,17],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","Settings","Using EventMQ","<code class=\"docutils literal\"><span class=\"pre\">classes</span></code> – Utility Classes","<code class=\"docutils literal\"><span class=\"pre\">devices</span></code> – Device Utilities","<code class=\"docutils literal\"><span class=\"pre\">utils</span></code> – Utilities","<code class=\"docutils literal\"><span class=\"pre\">messages</span></code> – Message Utilities","<code class=\"docutils literal\"><span class=\"pre\">settings</span></code> – Settings 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],concurrent_job:12,contribut:3,devic:15,document:[0,5],emqp:8,eventmq:[3,5,8,13],except:4,frame:8,get:[],global:8,glossari:[],goal:8,guid:[],header:8,heartbeat:8,indic:5,job:[6,12],jobmanag:6,languag:8,licens:8,manag:[6,12],messag:[2,17],mod:[],poller:7,protocol:8,queue:12,receiv:9,request:8,router:[8,10,12],schedul:[8,12],sender:11,set:[12,18],specif:8,start:[],style:[],tabl:5,time:19,timeutil:19,topolog:8,util:[1,14,15,16,17,18],utilit:19,welcom:[],worker:8}}) \ No newline at end of file | Search.setIndex({envversion:46,filenames:["api","client","client/messages","contributing","exceptions","index","jobmanager","poller","protocol","receiver","router","sender","settings_file","using","utils/classes","utils/devices","utils/index","utils/messages","utils/settings","utils/timeutils"],objects:{"eventmq.client":{messages:[2,0,0,"-"]},"eventmq.client.messages":{defer_job:[2,3,1,""],schedule:[2,3,1,""],send_request:[2,3,1,""],send_schedule_request:[2,3,1,""]},"eventmq.exceptions":{CallableFromPathError:[4,5,1,""],EventMQError:[4,5,1,""],InvalidMessageError:[4,5,1,""],MessageError:[4,5,1,""],NoAvailableWorkerSlotsError:[4,5,1,""],PeerGoneAwayError:[4,5,1,""],UnknownQueueError:[4,5,1,""]},"eventmq.jobmanager":{JobManager:[6,4,1,""],mp_init:[6,3,1,""]},"eventmq.jobmanager.JobManager":{"__init__":[6,2,1,""],concurrent_jobs:[6,1,1,""],jobmanager_main:[6,2,1,""],name:[6,1,1,""],on_heartbeat:[6,2,1,""],on_request:[6,2,1,""],outgoing:[6,1,1,""],queues:[6,1,1,""],send_ready:[6,2,1,""],send_reply:[6,2,1,""]},"eventmq.poller":{Poller:[7,4,1,""]},"eventmq.poller.Poller":{"__init__":[7,2,1,""],poll:[7,2,1,""],register:[7,2,1,""],unregister:[7,2,1,""]},"eventmq.receiver":{Receiver:[9,4,1,""]},"eventmq.receiver.Receiver":{"__init__":[9,2,1,""],connect:[9,2,1,""],listen:[9,2,1,""],name:[9,1,1,""],ready:[9,1,1,""],unbind:[9,2,1,""],zcontext:[9,1,1,""],zsocket:[9,1,1,""]},"eventmq.router":{Router:[10,4,1,""]},"eventmq.router.Router":{add_scheduler:[10,2,1,""],add_worker:[10,2,1,""],clean_up_dead_schedulers:[10,2,1,""],clean_up_dead_workers:[10,2,1,""],get_available_worker:[10,2,1,""],get_status:[10,2,1,""],job_latencies:[10,1,1,""],on_disconnect:[10,2,1,""],on_heartbeat:[10,2,1,""],on_inform:[10,2,1,""],on_ready:[10,2,1,""],on_reply:[10,2,1,""],on_request:[10,2,1,""],prioritize_queue_list:[10,6,1,""],process_client_message:[10,2,1,""],process_worker_message:[10,2,1,""],queues:[10,1,1,""],received_disconnect:[10,1,1,""],requeue_worker:[10,2,1,""],reset_heartbeat_counters:[10,2,1,""],router_main:[10,2,1,""],scheduler_queue:[10,1,1,""],schedulers:[10,1,1,""],send_ack:[10,2,1,""],send_heartbeat:[10,2,1,""],send_schedulers_heartbeats:[10,2,1,""],send_workers_heartbeats:[10,2,1,""],sighup_handler:[10,2,1,""],start:[10,2,1,""],waiting_messages:[10,1,1,""],workers:[10,1,1,""]},"eventmq.sender":{Sender:[11,4,1,""]},"eventmq.sender.Sender":{"__init__":[11,2,1,""],connect:[11,2,1,""],listen:[11,2,1,""],name:[11,1,1,""],ready:[11,1,1,""],rebuild:[11,2,1,""],unbind:[11,2,1,""],zcontext:[11,1,1,""],zsocket:[11,1,1,""]},"eventmq.utils":{classes:[14,0,0,"-"],devices:[15,0,0,"-"],messages:[17,0,0,"-"],random_characters:[16,3,1,""],settings:[18,0,0,"-"],timeutils:[19,0,0,"-"],tuplify:[16,3,1,""],zero_index_cmp:[16,3,1,""]},"eventmq.utils.classes":{EMQPService:[14,4,1,""],EMQdeque:[14,4,1,""],HeartbeatMixin:[14,4,1,""],ZMQReceiveMixin:[14,4,1,""],ZMQSendMixin:[14,4,1,""]},"eventmq.utils.classes.EMQPService":{"__weakref__":[14,1,1,""],is_heartbeat_enabled:[14,1,1,""],on_ack:[14,2,1,""],process_message:[14,2,1,""],reset:[14,2,1,""],send_inform:[14,2,1,""],start:[14,2,1,""]},"eventmq.utils.classes.EMQdeque":{"__init__":[14,2,1,""],"__weakref__":[14,1,1,""],append:[14,2,1,""],appendleft:[14,2,1,""],extend:[14,2,1,""],is_empty:[14,2,1,""],is_full:[14,2,1,""],is_pfull:[14,2,1,""],pop:[14,2,1,""],popleft:[14,2,1,""],remove:[14,2,1,""]},"eventmq.utils.classes.HeartbeatMixin":{"__init__":[14,2,1,""],"__weakref__":[14,1,1,""],is_dead:[14,2,1,""],reset_heartbeat_counters:[14,2,1,""],send_heartbeat:[14,2,1,""]},"eventmq.utils.classes.ZMQReceiveMixin":{"__weakref__":[14,1,1,""],recv:[14,2,1,""],recv_multipart:[14,2,1,""]},"eventmq.utils.classes.ZMQSendMixin":{"__weakref__":[14,1,1,""],send:[14,2,1,""],send_multipart:[14,2,1,""]},"eventmq.utils.devices":{generate_device_name:[15,3,1,""]},"eventmq.utils.messages":{fwd_emqp_router_message:[17,3,1,""],generate_msgid:[17,3,1,""],parse_message:[17,3,1,""],parse_router_message:[17,3,1,""],send_emqp_message:[17,3,1,""],send_emqp_router_message:[17,3,1,""]},"eventmq.utils.settings":{import_settings:[18,3,1,""]},"eventmq.utils.timeutils":{IntervalIter:[19,4,1,""],monotonic:[19,3,1,""],seconds_until:[19,3,1,""],timestamp:[19,3,1,""]},"eventmq.utils.timeutils.IntervalIter":{"__init__":[19,2,1,""],"__weakref__":[19,1,1,""]},eventmq:{client:[1,0,0,"-"],exceptions:[4,0,0,"-"],jobmanager:[6,0,0,"-"],poller:[7,0,0,"-"],receiver:[9,0,0,"-"],router:[10,0,0,"-"],sender:[11,0,0,"-"],utils:[16,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","attribute","Python attribute"],"2":["py","method","Python method"],"3":["py","function","Python function"],"4":["py","class","Python class"],"5":["py","exception","Python exception"],"6":["py","classmethod","Python class method"]},objtypes:{"0":"py:module","1":"py:attribute","2":"py:method","3":"py:function","4":"py:class","5":"py:exception","6":"py:classmethod"},terms:{"0mq":[8,14],"5min":19,"__init__":[6,7,9,11,14,19],"__weakref__":[14,19],"_empty_":8,"_headers_":8,"_issu":[],"_msg_":8,"_msgid_":8,"_queue_name_":8,"_queues_":8,"_recipient_id":14,"_sourc":[],"_topic_name_":8,"_unix_ts_":8,"abstract":8,"boolean":14,"case":[8,14,19],"class":[],"default":[2,6,8,9,10,11,12,14],"float":[14,19],"function":[2,6],"import":[2,3,6,10,12,18],"int":[2,7,8,10,14,19],"long":[7,14],"new":[6,10,14],"public":8,"return":[2,3,7,9,10,11,14,15,16,17,19],"short":10,"true":[8,9,10,11,14],"while":8,abl:[10,12],about:[6,8,10],absolut:3,accept:[8,12,14],account:[10,17],ack:[6,8,10],ackd_msgid:14,acknowledg:[6,8,10],across:8,act:[1,8],activ:[],active_job:[],actual:[6,10],add:10,add_schedul:10,add_work:10,addr:[9,11,14],address:[],administrative_addr:10,after:8,agre:8,all:[2,4,6,8,9,10,11,14],allow:8,alon:[],alpha:8,alreadi:10,also:14,alwai:2,and_data:17,ani:[2,8,10,16],announc:10,anoth:[6,10,12],anyth:12,api:[],app:14,appear:7,append:14,appendleft:14,appened:10,appli:18,applic:[2,8],architectur:[],aren:[],arg2:2,arg3:2,arg:[2,6,7,9,10,11,14],argument:14,arithmet:19,around:[],arrai:8,ascii:15,assign:12,assum:19,attempt:[4,10],attr:7,automat:14,avail:[4,10],available_slot:10,available_work:[],awaiting_ack:14,back:[8,10,14],backend_addr:10,backward:14,base:[4,7,12,14],basi:8,becaus:[10,14],becom:12,been:[2,10,14],befor:[2,7,8],begin:[10,12,14],belong:10,below:8,best:2,between:[2,8],bin:[],block:12,bool:[2,6,9,11,14],boot:19,both:[7,8],box:12,broadcast:8,broker:[6,8,14],broker_addr:6,buffer:10,build:[10,11],build_module_path:[],built:8,bulid:9,busi:[],calcul:19,call:[7,10,14],callabl:[2,4,6,9],callable_nam:4,callablefrompatherror:4,callback:14,can:[1,2,6,8,10,14,15,17],captur:14,care:15,caus:15,certain:14,chang:8,charact:16,check:[9,11,14],child:6,choos:12,circuit:10,class_arg:[2,6],class_kwarg:[2,6],classmethod:10,clean:8,clean_up_dead_schedul:10,clean_up_dead_work:10,clear:10,cli:10,client:[],clock:19,close:[14,19],cmp:16,code:[3,5,14],collect:14,colon:[2,12],column:[],com:[],come:[2,10],comma:8,command:[2,6,8,10,14,17],compar:16,compat:14,complet:8,compon:8,concurr:12,conf:12,config:12,configur:[2,10,18],connction:[9,11],connect:[6,8,9,10,11,14,17],consist:8,construct:4,contact:4,contain:[1,8,10,14,16],content:[],context:[6,9,11],control:12,contruct:14,convers:8,convert:16,convienc:[7,14],copi:6,core:12,correctli:[],count:[6,8,10,19],counter:[10,14],cpu:12,creat:[10,11,16],cron:2,cross:[],csv:8,current:[9,10,11,14],custom:10,cycl:12,data:[10,17],data_process:12,deal:16,dealer:11,death:14,debounc:2,debounce_deferred_job:2,debounce_sec:2,debug:8,decor:[],decrypt:[],decsend:10,def:[],defeat:8,defer:2,defer_job:2,defin:[2,6,8,9,11,14,19],deliv:[6,8],denot:2,depth:10,dequ:14,describ:8,descript:8,detail:8,detect:8,determin:8,devic:[],dialog:8,dict:[2,6,7],dictionari:[7,8,10],did:[],die:10,differ:3,directli:[7,14],disabl:2,disconnect:[],distribut:8,doe:14,doesn:7,don:[6,8],dot:2,down:[12,19],dst:19,duplic:10,dure:11,each:10,easi:[],effici:12,effort:2,either:[8,14],elaps:8,element:[10,14],els:[3,8],email:[8,12],empti:[8,17],emq:10,emqdequ:14,emqp:[],emqpservic:14,enabl:[2,14],encod:15,encount:[2,4],end:[2,14],enderlab:[],ensur:[2,6,8,14],entri:10,equal:12,error:[2,14,15],etc:[10,12],evalu:2,even:8,event:[7,14],eventloop:[],eventmqerror:4,everi:[2,6],everyth:15,exampl:[10,12,14,19],except:[],exectu:10,execut:[2,8,12,19],exist:[4,6],explicitli:[12,14],expos:6,extend:14,extra:8,fail:[2,4,8],failur:2,fair:8,fals:[2,8,9,11,14],featur:15,few:3,field:8,file:12,filter:[],find:14,finish:[8,10],first:[8,10,14,17],fit:8,flag:[2,7],follow:[2,8,14],fork:6,form:14,format:[2,6,8,10,17],forward:[10,14,17],found:[4,10,12],foundat:8,frame:[],free:8,from:[4,6,7,8,9,10,11,14,19],frontend_addr:10,full:14,func:[2,6,14],fwd_emqp_router_messag:17,gener:[6,7,8,9,11,17],generate_device_nam:15,generate_msgid:17,get_available_work:10,get_statu:10,github:[],give:2,given:10,gmtime:[],gnu:8,goal:[],good:14,group:12,guarante:[2,8],guarente:2,hand:16,handl:[6,8,10,14],handler:6,happen:[2,7,10,11],hard:14,hasn:10,have:[2,12,14,17],haven:10,header:[],heartbeat:[],heartbeat_timeout:10,heartbeati:14,heartbeatmixin:14,heavi:8,help:12,helper:14,here:[8,10],high:[],highest:12,hit:14,home:[],hope:8,how:[2,7],html:8,http:8,id_:[],ident:[8,15],identifi:10,ietf:8,ignor:[8,14],immedi:[2,8],immediatli:2,implement:[8,14],impli:8,import_set:18,inbetween:[],includ:[2,8,14],incom:[],index:[5,10,16],indexerror:10,indiviud:12,inform:[2,6,8,10,14],inform_typ:[],inherit:4,ini:[12,18],initi:[2,14],insert:[8,14],instal:3,instanc:6,instanti:[2,6],instead:8,integ:10,intens:12,interest:16,intern:4,interpret:8,interv:[2,8,19],interval_min:[],interval_sec:[2,19],intervalit:19,intes:[],invalidmessageerror:[4,10],is_dead:14,is_empti:14,is_ful:14,is_heartbeat_en:14,is_pful:14,isn:[10,14],issu:[3,5,8],item:14,iter:[7,10,14],iterat:14,itself:10,job:[],job_lat:10,job_schedul:2,jobmanag:[],jobmanager_main:6,keep:[6,10],kei:[7,8,10],keyword:[],kick:[6,10],know:[2,6,10],kwarg2:2,kwarg:[2,6,7,9,10,11,14],languag:[],larg:12,larger:12,largest:10,last:[2,10,14],last_recv_heartbeat:10,lataneci:10,latenc:10,later:8,least:[8,14],leav:[8,12],left:14,length:[14,16],lesser:8,let:8,lib:[],licens:[],like:[6,14,16],limit:14,list:[2,4,6,8,10,12,14,16,19],listen:[6,9,10,11,12,14],load:12,local:12,locat:2,log:[2,6,10],logic:[6,10],longer:[4,12],look:14,loop:[7,10,14],lot:12,low:[],lower:10,mai:[8,10,14],main:6,make:16,malform:4,manag:[],mani:[2,8,11],manual:8,master:8,match:14,measur:10,med:[],member:10,memebership:10,merchant:8,mess:19,messag:[],message_bodi:17,message_id:17,messageerror:4,met:14,meta:[10,17],method:[2,6,7,10,14],minut:2,mod:[],mode:[],model:12,modifi:8,modul:[1,5,6,16],monoton:[10,14,19],more:[2,8,14,16],most:14,mp_init:6,msg:[6,8,10,14,17],msg_id:[],msgid:[6,10,14],multipart:[8,14],multiprocess:[6,12],must:[8,14],name:[2,6,8,9,10,11,12,18],need:[6,10,11],never:[6,19],next:[7,10,12,19],noavailableworkerslotserror:[4,10],nohast:8,none:[2,6,9,10,11,14,15,17],noop:6,normal:14,note:[6,9,11],notifi:14,now:14,number:[2,10,12,19],numer:19,obj:10,object:[7,14,16,19],occur:14,off:[6,10],offlin:[],on_ack:14,on_command:[10,14],on_disconnect:10,on_emqp_command:14,on_ful:14,on_heartbeat:[6,10],on_inform:10,on_readi:10,on_receive_repli:[],on_receive_request:[],on_recv:9,on_repli:10,on_request:[6,10],on_schedul:14,onc:8,onli:[],onlin:[10,14],option:[2,6,8,9,11,17],order:10,org:8,orient:8,origin:8,original_msg:10,other:[2,8,12],otherwis:[6,9,11,14],out:[6,14],outgo:[6,14],overwhelm:[],own:14,packag:[],page:5,param:2,paramet:[2,6,7,9,10,11,14,15,16,17,18,19],pars:[10,14,17],parse_messag:17,parse_router_messag:17,part:[8,17],particular:[8,11],pass:[2,8,9,14],path:[2,4,6],payload:17,peer:[4,8,14],peergoneawayerror:[4,10],pend:8,per:10,pfull:14,philosophi:[],pictur:8,pip:[],placehold:[6,10],point:12,poll:7,poller:[],pollin:7,pollout:7,pool:[8,10],pop:[10,14],popleft:14,port:10,portion:6,possibl:3,practic:14,prefix:[15,17],prepar:10,prepend:8,pretti:[8,12],primari:[],priorit:10,prioriti:10,prioritiess:10,prioritize_queue_list:10,problem:4,process:[6,8,10,11,12,14],process_client_messag:10,process_messag:[6,14],process_worker_messag:10,programm:14,prop:[],proper:14,properti:[9,11,14],protocol:[],protocol_vers:14,provid:[10,14],pub:8,publish:8,purpos:8,push_notif:14,py2:19,py3:19,python2:[],python3:15,python:[6,14],queu:[],queue:[],queue_messag:[],queue_nam:10,quick:[],rais:[2,4,9,10,11,14,17],random:[16,17],random_charact:16,raw:14,raw_messag:[],readi:[6,8,9,10,11,12,14],rebind:10,rebuild:11,rebuilt:6,receiv:[],received_disconnect:10,recent:[8,10],reciev:[],recip:[],recipi:[6,10,14,17],recipient_id:17,recommend:[8,12,14],reconnect:11,recurs:[10,16],recus:10,recv:14,recv_multipart:14,redistribut:8,refer:[6,8,14,19],regist:[6,7,10],regular:8,reject:14,rel:3,reliabl:8,reload:10,remain:7,remot:14,remov:[8,10,14],reopen:14,rep:9,repli:[2,6,8,10,17],reply_request:2,repres:19,req:11,request:[],request_queu:[],requeue_work:10,requir:8,requri:[],reset:[10,14],reset_heartbeat_count:[10,14],resourc:[6,8],respond:[8,10,14],respons:[6,9,10,11],restart:[8,11],retri:[2,8,10],retry_count:2,rfc2119:8,rfc:8,right:14,robin:8,roughli:11,round:8,rout:[8,10],router:[],router_main:10,run:[2,6,8,10,12,14],safe:12,sake:19,same:[11,16],schedul:[],scheduler_id:10,scheduler_queu:10,scheduler_zmq_id:10,search:5,sec:2,second:[2,19],seconds_until:19,section:18,see:[2,7,8,10,14],self:[6,10,11,14],semi:12,send:[2,4,6,8,10,11,14,17],send_ack:10,send_emqp_messag:17,send_emqp_router_messag:17,send_heartbeat:[10,14],send_inform:14,send_kby:[],send_messag:[],send_multipart:14,send_raw:[],send_readi:6,send_repli:6,send_request:2,send_schedule_request:2,send_schedulers_heartbeat:10,send_workers_heartbeat:10,sender:[],sender_id:17,sent:[2,6,8,10,12,14],seper:[2,8,12],serial:10,serv:8,server:[6,8,12],servic:[8,14],service_typ:14,set:[],setup:[],shall:8,shalt:[],should:[2,4,7,8,9,10,11,12,14,17],shown:8,sighup:10,sighup_handl:10,signal:6,signum:10,similar:12,simpl:[10,16],sinc:19,singl:[8,14],site:[],size:14,skip:[11,14],skip_sign:6,skip_zmqstream:11,slot:10,slow:12,smaller:12,socket:[2,6,7,8,9,10,11,14,15,17],softwar:8,some:[2,6,12,14,16,17],someon:8,someth:[2,11,12,14,19],somewher:3,sort:16,sourc:[3,5],spawn:6,specif:[],specifi:[8,14,16],standard:12,start:[],start_valu:19,state:[10,14],statu:8,still:[10,12],stop:8,store:10,str:[2,6,9,10,11,14,15,16,17,18],string:[2,8,9,10,11,14,15,17],structur:4,sub:8,subclass:4,subcmd:6,subcommand:[2,6],subject:8,subsequ:[],subset:8,subtract:19,success:8,successfulli:14,support:14,system:[3,10],take:[10,11,14,15,17],taken:[],task:[2,6],tcp:10,tell:6,term:8,termin:6,test:6,than:[],thei:[2,14],them:9,thi:[1,2,4,6,7,8,9,10,11,12,14,15,16,17,19],thier:12,thing:[2,6,11,12,14,16,17],those:6,thou:[],thread:12,threshold:14,through:[8,10],thy:[],time:[],timeout:7,timestamp:[8,10,19],timeutil:[],timezon:[],tip:3,tool:8,topic:8,topolog:[],tornado:[],trace:8,track:[6,10,14],tri:2,tune:12,tupl:[6,7,10,14,16,17],tuplifi:16,type:[2,8,9,10,11,14,16,17],type_:14,typecast:7,typeerror:9,uint:[],unabl:10,unbind:[9,11],undefin:7,under:8,unicod:15,uniqu:[6,8,10],unit:6,univers:[],unix:8,unknownqueueerror:[4,10],unless:[6,9,11],unprioritized_iter:10,unregist:7,unschedul:[2,8],until:[12,19],untouch:[10,17],unus:8,updat:14,upon:8,upstream:6,usag:19,usual:14,utilit:[],utlitii:14,uuid:[6,9,10,11],vagrant:[],valid:8,valu:[2,7,8,10,14,16,17,19],valueerror:14,variabl:14,version:[3,8,14],via:[2,19],virtualenv:[],wait:[2,7,12],waiting_messag:10,walk:6,want:[8,12,14],warn:10,warranti:8,weak:[14,19],web:8,weight:[8,12,14],well:8,went:[],when:[1,2,3,4,6,8,9,10,11,14,15,16],where:[2,8,10,14,19],which:[8,10,14,15],who:[1,10],wish:17,without:[6,8,11],word:8,work:[3,6,14],worker:[],worker_id:10,worri:8,would:[12,14,19],wrap:[],wrong:[],you:[3,8,10,11,12,14,17],your:[2,8,12,14],zcontext:[9,11],zero_index_cmp:16,zeromq:8,zmq:[7,8,9,10,11,14,15,17],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","Settings","Using EventMQ","<code class=\"docutils literal\"><span class=\"pre\">classes</span></code> – Utility Classes","<code class=\"docutils literal\"><span class=\"pre\">devices</span></code> – Device Utilities","<code class=\"docutils literal\"><span class=\"pre\">utils</span></code> – Utilities","<code class=\"docutils literal\"><span class=\"pre\">messages</span></code> – Message Utilities","<code class=\"docutils literal\"><span class=\"pre\">settings</span></code> – Settings 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],concurrent_job:12,contribut:3,devic:15,disconnect:8,document:[0,5],emqp:8,eventmq:[3,5,8,13],except:4,frame:8,get:[],global:8,glossari:[],goal:8,guid:[],header:8,heartbeat:8,indic:5,job:[6,12],jobmanag:6,kbai:8,languag:8,licens:8,manag:[6,12],messag:[2,17],mod:[],poller:7,protocol:8,queue:12,receiv:9,request:[],router:[8,10,12],schedul:[8,12],sender:11,set:[12,18],specif:8,start:[],style:[],tabl:5,time:19,timeutil:19,topolog:8,util:[1,14,15,16,17,18],utilit:19,welcom:[],worker:8}}) \ No newline at end of file | ||
diff --git a/sender.html b/sender.html index 2c4f7a7..d5d3234 100644 --- a/sender.html +++ b/sender.html | |||
| @@ -61,7 +61,7 @@ | |||
| 61 | 61 | ||
| 62 | 62 | ||
| 63 | <div class="version"> | 63 | <div class="version"> |
| 64 | 0.2.1 | 64 | 0.2.6.2 |
| 65 | </div> | 65 | </div> |
| 66 | 66 | ||
| 67 | 67 | ||
diff --git a/settings_file.html b/settings_file.html index ba17599..290a57e 100644 --- a/settings_file.html +++ b/settings_file.html | |||
| @@ -61,7 +61,7 @@ | |||
| 61 | 61 | ||
| 62 | 62 | ||
| 63 | <div class="version"> | 63 | <div class="version"> |
| 64 | 0.2.1 | 64 | 0.2.6.2 |
| 65 | </div> | 65 | </div> |
| 66 | 66 | ||
| 67 | 67 | ||
| @@ -60,7 +60,7 @@ | |||
| 60 | 60 | ||
| 61 | 61 | ||
| 62 | <div class="version"> | 62 | <div class="version"> |
| 63 | 0.2.1 | 63 | 0.2.6.2 |
| 64 | </div> | 64 | </div> |
| 65 | 65 | ||
| 66 | 66 | ||
diff --git a/utils/classes.html b/utils/classes.html index a18e66e..e0ca5eb 100644 --- a/utils/classes.html +++ b/utils/classes.html | |||
| @@ -61,7 +61,7 @@ | |||
| 61 | 61 | ||
| 62 | 62 | ||
| 63 | <div class="version"> | 63 | <div class="version"> |
| 64 | 0.2.1 | 64 | 0.2.6.2 |
| 65 | </div> | 65 | </div> |
| 66 | 66 | ||
| 67 | 67 | ||
diff --git a/utils/devices.html b/utils/devices.html index ab3b6ce..89baede 100644 --- a/utils/devices.html +++ b/utils/devices.html | |||
| @@ -61,7 +61,7 @@ | |||
| 61 | 61 | ||
| 62 | 62 | ||
| 63 | <div class="version"> | 63 | <div class="version"> |
| 64 | 0.2.1 | 64 | 0.2.6.2 |
| 65 | </div> | 65 | </div> |
| 66 | 66 | ||
| 67 | 67 | ||
diff --git a/utils/index.html b/utils/index.html index 0a370e0..65c0c92 100644 --- a/utils/index.html +++ b/utils/index.html | |||
| @@ -61,7 +61,7 @@ | |||
| 61 | 61 | ||
| 62 | 62 | ||
| 63 | <div class="version"> | 63 | <div class="version"> |
| 64 | 0.2.1 | 64 | 0.2.6.2 |
| 65 | </div> | 65 | </div> |
| 66 | 66 | ||
| 67 | 67 | ||
diff --git a/utils/messages.html b/utils/messages.html index 6ecfa47..8f06b99 100644 --- a/utils/messages.html +++ b/utils/messages.html | |||
| @@ -61,7 +61,7 @@ | |||
| 61 | 61 | ||
| 62 | 62 | ||
| 63 | <div class="version"> | 63 | <div class="version"> |
| 64 | 0.2.1 | 64 | 0.2.6.2 |
| 65 | </div> | 65 | </div> |
| 66 | 66 | ||
| 67 | 67 | ||
diff --git a/utils/settings.html b/utils/settings.html index a209af0..57e912c 100644 --- a/utils/settings.html +++ b/utils/settings.html | |||
| @@ -61,7 +61,7 @@ | |||
| 61 | 61 | ||
| 62 | 62 | ||
| 63 | <div class="version"> | 63 | <div class="version"> |
| 64 | 0.2.1 | 64 | 0.2.6.2 |
| 65 | </div> | 65 | </div> |
| 66 | 66 | ||
| 67 | 67 | ||
diff --git a/utils/timeutils.html b/utils/timeutils.html index 0815b80..8003f70 100644 --- a/utils/timeutils.html +++ b/utils/timeutils.html | |||
| @@ -61,7 +61,7 @@ | |||
| 61 | 61 | ||
| 62 | 62 | ||
| 63 | <div class="version"> | 63 | <div class="version"> |
| 64 | 0.2.1 | 64 | 0.2.6.2 |
| 65 | </div> | 65 | </div> |
| 66 | 66 | ||
| 67 | 67 | ||