Repository: qpid-site Updated Branches: refs/heads/asf-site 4be7b17a5 -> 55375a760
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/55375a76/input/releases/qpid-python-1.36.0/messaging-api/examples/spout.html.in ---------------------------------------------------------------------- diff --git a/input/releases/qpid-python-1.36.0/messaging-api/examples/spout.html.in b/input/releases/qpid-python-1.36.0/messaging-api/examples/spout.html.in new file mode 100644 index 0000000..1d4509c --- /dev/null +++ b/input/releases/qpid-python-1.36.0/messaging-api/examples/spout.html.in @@ -0,0 +1,118 @@ + +<h1>spout</h1> +<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">optparse</span><span class="o">,</span> <span class="nn">time</span> +<span class="kn">from</span> <span class="nn">qpid.messaging</span> <span class="kn">import</span> <span class="o">*</span> +<span class="kn">from</span> <span class="nn">qpid.util</span> <span class="kn">import</span> <span class="n">URL</span> +<span class="kn">from</span> <span class="nn">qpid.log</span> <span class="kn">import</span> <span class="n">enable</span><span class="p">,</span> <span class="n">DEBUG</span><span class="p">,</span> <span class="n">WARN</span> + +<span class="k">def</span> <span class="nf">nameval</span><span class="p">(</span><span class="n">st</span><span class="p">):</span> + <span class="n">idx</span> <span class="o">=</span> <span class="n">st</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">"="</span><span class="p">)</span> + <span class="k">if</span> <span class="n">idx</span> <span class="o">>=</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">name</span> <span class="o">=</span> <span class="n">st</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="n">idx</span><span class="p">]</span> + <span class="n">value</span> <span class="o">=</span> <span class="n">st</span><span class="p">[</span><span class="n">idx</span><span class="o">+</span><span class="mi">1</span><span class="p">:]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">name</span> <span class="o">=</span> <span class="n">st</span> + <span class="n">value</span> <span class="o">=</span> <span class="bp">None</span> + <span class="k">return</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span> + +<span class="n">parser</span> <span class="o">=</span> <span class="n">optparse</span><span class="o">.</span><span class="n">OptionParser</span><span class="p">(</span><span class="n">usage</span><span class="o">=</span><span class="s2">"usage: %prog [options] ADDRESS [ CONTENT ... ]"</span><span class="p">,</span> + <span class="n">description</span><span class="o">=</span><span class="s2">"Send messages to the supplied address."</span><span class="p">)</span> +<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">"-b"</span><span class="p">,</span> <span class="s2">"--broker"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">"localhost"</span><span class="p">,</span> + <span class="n">help</span><span class="o">=</span><span class="s2">"connect to specified BROKER (default </span><span class="si">%d</span><span class="s2">efault)"</span><span class="p">)</span> +<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">"-r"</span><span class="p">,</span> <span class="s2">"--reconnect"</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s2">"store_true"</span><span class="p">,</span> + <span class="n">help</span><span class="o">=</span><span class="s2">"enable auto reconnect"</span><span class="p">)</span> +<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">"-i"</span><span class="p">,</span> <span class="s2">"--reconnect-interval"</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">"float"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> + <span class="n">help</span><span class="o">=</span><span class="s2">"interval between reconnect attempts"</span><span class="p">)</span> +<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">"-l"</span><span class="p">,</span> <span class="s2">"--reconnect-limit"</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">"int"</span><span class="p">,</span> + <span class="n">help</span><span class="o">=</span><span class="s2">"maximum number of reconnect attempts"</span><span class="p">)</span> +<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">"-c"</span><span class="p">,</span> <span class="s2">"--count"</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">"int"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> + <span class="n">help</span><span class="o">=</span><span class="s2">"stop after count messages have been sent, zero disables (default </span><span class="si">%d</span><span class="s2">efault)"</span><span class="p">)</span> +<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">"-d"</span><span class="p">,</span> <span class="s2">"--durable"</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s2">"store_true"</span><span class="p">,</span> + <span class="n">help</span><span class="o">=</span><span class="s2">"make the message persistent"</span><span class="p">)</span> +<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">"-t"</span><span class="p">,</span> <span class="s2">"--timeout"</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">"float"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> + <span class="n">help</span><span class="o">=</span><span class="s2">"exit after the specified time"</span><span class="p">)</span> +<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">"-I"</span><span class="p">,</span> <span class="s2">"--id"</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"use the supplied id instead of generating one"</span><span class="p">)</span> +<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">"-S"</span><span class="p">,</span> <span class="s2">"--subject"</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"specify a subject"</span><span class="p">)</span> +<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">"-R"</span><span class="p">,</span> <span class="s2">"--reply-to"</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"specify reply-to address"</span><span class="p">)</span> +<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">"-P"</span><span class="p">,</span> <span class="s2">"--property"</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">"properties"</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s2">"append"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="p">[],</span> + <span class="n">metavar</span><span class="o">=</span><span class="s2">"NAME=VALUE"</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"specify message property"</span><span class="p">)</span> +<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">"-M"</span><span class="p">,</span> <span class="s2">"--map"</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">"entries"</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s2">"append"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="p">[],</span> + <span class="n">metavar</span><span class="o">=</span><span class="s2">"KEY=VALUE"</span><span class="p">,</span> + <span class="n">help</span><span class="o">=</span><span class="s2">"specify map entry for message body"</span><span class="p">)</span> +<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s2">"-v"</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">"verbose"</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s2">"store_true"</span><span class="p">,</span> + <span class="n">help</span><span class="o">=</span><span class="s2">"enable logging"</span><span class="p">)</span> + +<span class="n">opts</span><span class="p">,</span> <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span> + +<span class="k">if</span> <span class="n">opts</span><span class="o">.</span><span class="n">verbose</span><span class="p">:</span> + <span class="n">enable</span><span class="p">(</span><span class="s2">"qpid"</span><span class="p">,</span> <span class="n">DEBUG</span><span class="p">)</span> +<span class="k">else</span><span class="p">:</span> + <span class="n">enable</span><span class="p">(</span><span class="s2">"qpid"</span><span class="p">,</span> <span class="n">WARN</span><span class="p">)</span> + +<span class="k">if</span> <span class="n">opts</span><span class="o">.</span><span class="n">id</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> + <span class="n">spout_id</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">uuid4</span><span class="p">())</span> +<span class="k">else</span><span class="p">:</span> + <span class="n">spout_id</span> <span class="o">=</span> <span class="n">opts</span><span class="o">.</span><span class="n">id</span> +<span class="k">if</span> <span class="n">args</span><span class="p">:</span> + <span class="n">addr</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> +<span class="k">else</span><span class="p">:</span> + <span class="n">parser</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">"address is required"</span><span class="p">)</span> + +<span class="n">content</span> <span class="o">=</span> <span class="bp">None</span> +<span class="n">content_type</span> <span class="o">=</span> <span class="bp">None</span> + +<span class="k">if</span> <span class="n">args</span><span class="p">:</span> + <span class="n">text</span> <span class="o">=</span> <span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> +<span class="k">else</span><span class="p">:</span> + <span class="n">text</span> <span class="o">=</span> <span class="bp">None</span> + +<span class="k">if</span> <span class="n">opts</span><span class="o">.</span><span class="n">entries</span><span class="p">:</span> + <span class="n">content</span> <span class="o">=</span> <span class="p">{}</span> + <span class="k">if</span> <span class="n">text</span><span class="p">:</span> + <span class="n">content</span><span class="p">[</span><span class="s2">"text"</span><span class="p">]</span> <span class="o">=</span> <span class="n">text</span> + <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">opts</span><span class="o">.</span><span class="n">entries</span><span class="p">:</span> + <span class="n">name</span><span class="p">,</span> <span class="n">val</span> <span class="o">=</span> <span class="n">nameval</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> + <span class="n">content</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">val</span> +<span class="k">else</span><span class="p">:</span> + <span class="n">content</span> <span class="o">=</span> <span class="n">text</span> + <span class="c1"># no entries were supplied, so assume text/plain for</span> + <span class="c1"># compatibility with java (and other) clients</span> + <span class="n">content_type</span> <span class="o">=</span> <span class="s2">"text/plain"</span> + +<span class="n">conn</span> <span class="o">=</span> <span class="n">Connection</span><span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">broker</span><span class="p">,</span> + <span class="n">reconnect</span><span class="o">=</span><span class="n">opts</span><span class="o">.</span><span class="n">reconnect</span><span class="p">,</span> + <span class="n">reconnect_interval</span><span class="o">=</span><span class="n">opts</span><span class="o">.</span><span class="n">reconnect_interval</span><span class="p">,</span> + <span class="n">reconnect_limit</span><span class="o">=</span><span class="n">opts</span><span class="o">.</span><span class="n">reconnect_limit</span><span class="p">)</span> +<span class="k">try</span><span class="p">:</span> + <span class="n">conn</span><span class="o">.</span><span class="n">open</span><span class="p">()</span> + <span class="n">ssn</span> <span class="o">=</span> <span class="n">conn</span><span class="o">.</span><span class="n">session</span><span class="p">()</span> + <span class="n">snd</span> <span class="o">=</span> <span class="n">ssn</span><span class="o">.</span><span class="n">sender</span><span class="p">(</span><span class="n">addr</span><span class="p">)</span> + + <span class="n">count</span> <span class="o">=</span> <span class="mi">0</span> + <span class="n">start</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> + <span class="k">while</span> <span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">count</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">count</span> <span class="o"><</span> <span class="n">opts</span><span class="o">.</span><span class="n">count</span><span class="p">)</span> <span class="ow">and</span> \ + <span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">timeout</span> <span class="ow">is</span> <span class="bp">None</span> <span class="ow">or</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> <span class="o">-</span> <span class="n">start</span> <span class="o"><</span> <span class="n">opts</span><span class="o">.</span><span class="n">timeout</span><span class="p">):</span> + <span class="n">msg</span> <span class="o">=</span> <span class="n">Message</span><span class="p">(</span><span class="n">subject</span><span class="o">=</span><span class="n">opts</span><span class="o">.</span><span class="n">subject</span><span class="p">,</span> + <span class="n">reply_to</span><span class="o">=</span><span class="n">opts</span><span class="o">.</span><span class="n">reply_to</span><span class="p">,</span> + <span class="n">content</span><span class="o">=</span><span class="n">content</span><span class="p">)</span> + <span class="k">if</span> <span class="n">opts</span><span class="o">.</span><span class="n">durable</span><span class="p">:</span> + <span class="n">msg</span><span class="o">.</span><span class="n">durable</span> <span class="o">=</span> <span class="bp">True</span> + <span class="k">if</span> <span class="n">content_type</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> + <span class="n">msg</span><span class="o">.</span><span class="n">content_type</span> <span class="o">=</span> <span class="n">content_type</span> + <span class="n">msg</span><span class="o">.</span><span class="n">properties</span><span class="p">[</span><span class="s2">"spout-id"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"</span><span class="si">%s</span><span class="s2">:</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">spout_id</span><span class="p">,</span> <span class="n">count</span><span class="p">)</span> + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">opts</span><span class="o">.</span><span class="n">properties</span><span class="p">:</span> + <span class="n">name</span><span class="p">,</span> <span class="n">val</span> <span class="o">=</span> <span class="n">nameval</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> + <span class="n">msg</span><span class="o">.</span><span class="n">properties</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">val</span> + + <span class="n">snd</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span> + <span class="n">count</span> <span class="o">+=</span> <span class="mi">1</span> + <span class="k">print</span> <span class="n">msg</span> +<span class="k">except</span> <span class="n">SendError</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> + <span class="k">print</span> <span class="n">e</span> +<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> + <span class="k">pass</span> + +<span class="n">conn</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> +</pre></div> + +<p><a href="spout">Download this file</a></p> http://git-wip-us.apache.org/repos/asf/qpid-site/blob/55375a76/input/releases/qpid-python-1.36.0/messaging-api/examples/statistics.py ---------------------------------------------------------------------- diff --git a/input/releases/qpid-python-1.36.0/messaging-api/examples/statistics.py b/input/releases/qpid-python-1.36.0/messaging-api/examples/statistics.py new file mode 100644 index 0000000..e095920 --- /dev/null +++ b/input/releases/qpid-python-1.36.0/messaging-api/examples/statistics.py @@ -0,0 +1,139 @@ +#!/usr/bin/env python +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +import time + +TS = "ts" +TIME_SEC = 1000000000 +MILLISECOND = 1000 + +class Statistic: + def message(self, msg): + return + def report(self): + return "" + def header(self): + return "" + + +class Throughput(Statistic): + def __init__(self): + self.messages = 0 + self.started = False + + def message(self, m): + self.messages += 1 + if not self.started: + self.start = time.time() + self.started = True + + def header(self): + return "tp(m/s)" + + def report(self): + if self.started: + elapsed = time.time() - self.start + return str(int(self.messages/elapsed)) + else: + return "0" + + +class ThroughputAndLatency(Throughput): + def __init__(self): + Throughput.__init__(self) + self.total = 0.0 + self.min = float('inf') + self.max = -float('inf') + self.samples = 0 + + def message(self, m): + Throughput.message(self, m) + if TS in m.properties: + self.samples+=1 + latency = MILLISECOND * (time.time() - float(m.properties[TS])/TIME_SEC) + if latency > 0: + self.total += latency + if latency < self.min: + self.min = latency + if latency > self.max: + self.max = latency + + def header(self): +# Throughput.header(self) + return "%s\tl-min\tl-max\tl-avg" % Throughput.header(self) + + def report(self): + output = Throughput.report(self) + if (self.samples > 0): + output += "\t%.2f\t%.2f\t%.2f" %(self.min, self.max, self.total/self.samples) + return output + + +# Report batch and overall statistics +class ReporterBase: + def __init__(self, batch, wantHeader): + self.batchSize = batch + self.batchCount = 0 + self.headerPrinted = not wantHeader + self.overall = None + self.batch = None + + def create(self): + return + + # Count message in the statistics + def message(self, m): + if self.overall == None: + self.overall = self.create() + self.overall.message(m) + if self.batchSize: + if self.batch == None: + self.batch = self.create() + self.batch.message(m) + self.batchCount+=1 + if self.batchCount == self.batchSize: + self.header() + print self.batch.report() + self.create() + self.batchCount = 0 + + # Print overall report. + def report(self): + if self.overall == None: + self.overall = self.create() + self.header() + print self.overall.report() + + def header(self): + if not self.headerPrinted: + if self.overall == None: + self.overall = self.create() + print self.overall.header() + self.headerPrinted = True + + +class Reporter(ReporterBase): + def __init__(self, batchSize, wantHeader, Stats): + ReporterBase.__init__(self, batchSize, wantHeader) + self.__stats = Stats + + def create(self): + ClassName = self.__stats.__class__ + return ClassName() http://git-wip-us.apache.org/repos/asf/qpid-site/blob/55375a76/input/releases/qpid-python-1.36.0/messaging-api/examples/statistics.py.html.in ---------------------------------------------------------------------- diff --git a/input/releases/qpid-python-1.36.0/messaging-api/examples/statistics.py.html.in b/input/releases/qpid-python-1.36.0/messaging-api/examples/statistics.py.html.in new file mode 100644 index 0000000..c5567fd --- /dev/null +++ b/input/releases/qpid-python-1.36.0/messaging-api/examples/statistics.py.html.in @@ -0,0 +1,124 @@ + +<h1>statistics.py</h1> +<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">time</span> + +<span class="n">TS</span> <span class="o">=</span> <span class="s2">"ts"</span> +<span class="n">TIME_SEC</span> <span class="o">=</span> <span class="mi">1000000000</span> +<span class="n">MILLISECOND</span> <span class="o">=</span> <span class="mi">1000</span> + +<span class="k">class</span> <span class="nc">Statistic</span><span class="p">:</span> + <span class="k">def</span> <span class="nf">message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">msg</span><span class="p">):</span> + <span class="k">return</span> + <span class="k">def</span> <span class="nf">report</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="s2">""</span> + <span class="k">def</span> <span class="nf">header</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="s2">""</span> + + +<span class="k">class</span> <span class="nc">Throughput</span><span class="p">(</span><span class="n">Statistic</span><span class="p">):</span> + <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">messages</span> <span class="o">=</span> <span class="mi">0</span> + <span class="bp">self</span><span class="o">.</span><span class="n">started</span> <span class="o">=</span> <span class="bp">False</span> + + <span class="k">def</span> <span class="nf">message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">m</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">messages</span> <span class="o">+=</span> <span class="mi">1</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">started</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">start</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">started</span> <span class="o">=</span> <span class="bp">True</span> + + <span class="k">def</span> <span class="nf">header</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="s2">"tp(m/s)"</span> + + <span class="k">def</span> <span class="nf">report</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">started</span><span class="p">:</span> + <span class="n">elapsed</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">start</span> + <span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">messages</span><span class="o">/</span><span class="n">elapsed</span><span class="p">))</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">return</span> <span class="s2">"0"</span> + + +<span class="k">class</span> <span class="nc">ThroughputAndLatency</span><span class="p">(</span><span class="n">Throughput</span><span class="p">):</span> + <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="n">Throughput</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">total</span> <span class="o">=</span> <span class="mf">0.0</span> + <span class="bp">self</span><span class="o">.</span><span class="n">min</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="s1">'inf'</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">max</span> <span class="o">=</span> <span class="o">-</span><span class="nb">float</span><span class="p">(</span><span class="s1">'inf'</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">samples</span> <span class="o">=</span> <span class="mi">0</span> + + <span class="k">def</span> <span class="nf">message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">m</span><span class="p">):</span> + <span class="n">Throughput</span><span class="o">.</span><span class="n">message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">m</span><span class="p">)</span> + <span class="k">if</span> <span class="n">TS</span> <span class="ow">in</span> <span class="n">m</span><span class="o">.</span><span class="n">properties</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">samples</span><span class="o">+=</span><span class="mi">1</span> + <span class="n">latency</span> <span class="o">=</span> <span class="n">MILLISECOND</span> <span class="o">*</span> <span class="p">(</span><span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> <span class="o">-</span> <span class="nb">float</span><span class="p">(</span><span class="n">m</span><span class="o">.</span><span class="n">properties</span><span class="p">[</span><span class="n">TS</span><span class="p">])</span><span class="o">/</span><span class="n">TIME_SEC</span><span class="p">)</span> + <span class="k">if</span> <span class="n">latency</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">total</span> <span class="o">+=</span> <span class="n">latency</span> + <span class="k">if</span> <span class="n">latency</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">min</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">min</span> <span class="o">=</span> <span class="n">latency</span> + <span class="k">if</span> <span class="n">latency</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">max</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">max</span> <span class="o">=</span> <span class="n">latency</span> + + <span class="k">def</span> <span class="nf">header</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +<span class="c1"># Throughput.header(self)</span> + <span class="k">return</span> <span class="s2">"</span><span class="si">%s</span><span class="se">\t</span><span class="s2">l-min</span><span class="se">\t</span><span class="s2">l-max</span><span class="se">\t</span><span class="s2">l-avg"</span> <span class="o">%</span> <span class="n">Throughput</span><span class="o">.</span><span class="n">header</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> + + <span class="k">def</span> <span class="nf">report</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="n">output</span> <span class="o">=</span> <span class="n">Throughput</span><span class="o">.</span><span class="n">report</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> + <span class="k">if</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">samples</span> <span class="o">></span> <span class="mi">0</span><span class="p">):</span> + <span class="n">output</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\t</span><span class="si">%.2f</span><span class="se">\t</span><span class="si">%.2f</span><span class="se">\t</span><span class="si">%.2f</span><span class="s2">"</span> <span class="o">%</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">min</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">max</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">total</span><span class="o">/</span><span class="bp">self</span><span class="o">.</span><span class="n">samples</span><span class="p">)</span> + <span class="k">return</span> <span class="n">output</span> + + +<span class="c1"># Report batch and overall statistics</span> +<span class="k">class</span> <span class="nc">ReporterBase</span><span class="p">:</span> + <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">batch</span><span class="p">,</span> <span class="n">wantHeader</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">batchSize</span> <span class="o">=</span> <span class="n">batch</span> + <span class="bp">self</span><span class="o">.</span><span class="n">batchCount</span> <span class="o">=</span> <span class="mi">0</span> + <span class="bp">self</span><span class="o">.</span><span class="n">headerPrinted</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">wantHeader</span> + <span class="bp">self</span><span class="o">.</span><span class="n">overall</span> <span class="o">=</span> <span class="bp">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">batch</span> <span class="o">=</span> <span class="bp">None</span> + + <span class="k">def</span> <span class="nf">create</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> + + <span class="c1"># Count message in the statistics</span> + <span class="k">def</span> <span class="nf">message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">m</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">overall</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">overall</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">create</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">overall</span><span class="o">.</span><span class="n">message</span><span class="p">(</span><span class="n">m</span><span class="p">)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">batchSize</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">batch</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">batch</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">create</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">batch</span><span class="o">.</span><span class="n">message</span><span class="p">(</span><span class="n">m</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">batchCount</span><span class="o">+=</span><span class="mi">1</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">batchCount</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">batchSize</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">header</span><span class="p">()</span> + <span class="k">print</span> <span class="bp">self</span><span class="o">.</span><span class="n">batch</span><span class="o">.</span><span class="n">report</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">create</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">batchCount</span> <span class="o">=</span> <span class="mi">0</span> + + <span class="c1"># Print overall report.</span> + <span class="k">def</span> <span class="nf">report</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">overall</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">overall</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">create</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">header</span><span class="p">()</span> + <span class="k">print</span> <span class="bp">self</span><span class="o">.</span><span class="n">overall</span><span class="o">.</span><span class="n">report</span><span class="p">()</span> + + <span class="k">def</span> <span class="nf">header</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">headerPrinted</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">overall</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">overall</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">create</span><span class="p">()</span> + <span class="k">print</span> <span class="bp">self</span><span class="o">.</span><span class="n">overall</span><span class="o">.</span><span class="n">header</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">headerPrinted</span> <span class="o">=</span> <span class="bp">True</span> + + +<span class="k">class</span> <span class="nc">Reporter</span><span class="p">(</span><span class="n">ReporterBase</span><span class="p">):</span> + <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">batchSize</span><span class="p">,</span> <span class="n">wantHeader</span><span class="p">,</span> <span class="n">Stats</span><span class="p">):</span> + <span class="n">ReporterBase</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">batchSize</span><span class="p">,</span> <span class="n">wantHeader</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">__stats</span> <span class="o">=</span> <span class="n">Stats</span> + + <span class="k">def</span> <span class="nf">create</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="n">ClassName</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__stats</span><span class="o">.</span><span class="n">__class__</span> + <span class="k">return</span> <span class="n">ClassName</span><span class="p">()</span> +</pre></div> + +<p><a href="statistics.py">Download this file</a></p> http://git-wip-us.apache.org/repos/asf/qpid-site/blob/55375a76/input/releases/qpid-python-1.36.0/release-notes.md ---------------------------------------------------------------------- diff --git a/input/releases/qpid-python-1.36.0/release-notes.md b/input/releases/qpid-python-1.36.0/release-notes.md new file mode 100644 index 0000000..9b49252 --- /dev/null +++ b/input/releases/qpid-python-1.36.0/release-notes.md @@ -0,0 +1,34 @@ +;; +;; Licensed to the Apache Software Foundation (ASF) under one +;; or more contributor license agreements. See the NOTICE file +;; distributed with this work for additional information +;; regarding copyright ownership. The ASF licenses this file +;; to you under the Apache License, Version 2.0 (the +;; "License"); you may not use this file except in compliance +;; with the License. You may obtain a copy of the License at +;; +;; http://www.apache.org/licenses/LICENSE-2.0 +;; +;; Unless required by applicable law or agreed to in writing, +;; software distributed under the License is distributed on an +;; "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +;; KIND, either express or implied. See the License for the +;; specific language governing permissions and limitations +;; under the License. +;; + +# Qpid Python 1.36.0 Release Notes + +Qpid Python includes an AMQP messaging library and a suite of tests +for AMQP conformance. + +For more information about this release, including download links and +documentation, see the [release overview](index.html). + + +## Bugs fixed + + - [QPID-7317](https://issues.apache.org/jira/browse/QPID-7317) - Deadlock on publish + - [QPID-7423](https://issues.apache.org/jira/browse/QPID-7423) - [0-8...0-91] Chunk message content that exceeds the capacity of a single frame into multiple frames + - [QPID-7424](https://issues.apache.org/jira/browse/QPID-7424) - [0-8..0-91] Consuming python client application is not notified of remotely closed connection + - [QPID-7588](https://issues.apache.org/jira/browse/QPID-7588) - [Python Client 0-8..0-91] The received message ocasionally might not be dispatched into the application queue in timely manner \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org