/usr/share/doc/python-pika-doc/html/examples/comparing_publishing_sync_async.html is in python-pika-doc 0.11.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Comparing Message Publishing with BlockingConnection and SelectConnection — pika 0.11.0 documentation</title>
<link rel="stylesheet" href="../_static/classic.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
VERSION: '0.11.0',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Using Delivery Confirmations with the BlockingConnection" href="blocking_delivery_confirmations.html" />
<link rel="prev" title="Using the BlockingChannel.consume generator to consume messages" href="blocking_consumer_generator.html" />
</head>
<body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="blocking_delivery_confirmations.html" title="Using Delivery Confirmations with the BlockingConnection"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="blocking_consumer_generator.html" title="Using the BlockingChannel.consume generator to consume messages"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">pika 0.11.0 documentation</a> »</li>
<li class="nav-item nav-item-1"><a href="../examples.html" accesskey="U">Usage Examples</a> »</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="section" id="comparing-message-publishing-with-blockingconnection-and-selectconnection">
<h1>Comparing Message Publishing with BlockingConnection and SelectConnection<a class="headerlink" href="#comparing-message-publishing-with-blockingconnection-and-selectconnection" title="Permalink to this headline">ΒΆ</a></h1>
<p>For those doing simple, non-asynchronous programing, <a class="reference internal" href="../modules/adapters/blocking.html#pika.adapters.blocking_connection.BlockingConnection" title="pika.adapters.blocking_connection.BlockingConnection"><code class="xref py py-meth docutils literal"><span class="pre">pika.adapters.blocking_connection.BlockingConnection()</span></code></a> proves to be the easiest way to get up and running with Pika to publish messages.</p>
<p>In the following example, a connection is made to RabbitMQ listening to port <em>5672</em> on <em>localhost</em> using the username <em>guest</em> and password <em>guest</em> and virtual host <em>/</em>. Once connected, a channel is opened and a message is published to the <em>test_exchange</em> exchange using the <em>test_routing_key</em> routing key. The BasicProperties value passed in sets the message to delivery mode <em>1</em> (non-persisted) with a content-type of <em>text/plain</em>. Once the message is published, the connection is closed:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">pika</span>
<span class="n">parameters</span> <span class="o">=</span> <span class="n">pika</span><span class="o">.</span><span class="n">URLParameters</span><span class="p">(</span><span class="s1">'amqp://guest:guest@localhost:5672/</span><span class="si">%2F</span><span class="s1">'</span><span class="p">)</span>
<span class="n">connection</span> <span class="o">=</span> <span class="n">pika</span><span class="o">.</span><span class="n">BlockingConnection</span><span class="p">(</span><span class="n">parameters</span><span class="p">)</span>
<span class="n">channel</span> <span class="o">=</span> <span class="n">connection</span><span class="o">.</span><span class="n">channel</span><span class="p">()</span>
<span class="n">channel</span><span class="o">.</span><span class="n">basic_publish</span><span class="p">(</span><span class="s1">'test_exchange'</span><span class="p">,</span>
<span class="s1">'test_routing_key'</span><span class="p">,</span>
<span class="s1">'message body value'</span><span class="p">,</span>
<span class="n">pika</span><span class="o">.</span><span class="n">BasicProperties</span><span class="p">(</span><span class="n">content_type</span><span class="o">=</span><span class="s1">'text/plain'</span><span class="p">,</span>
<span class="n">delivery_mode</span><span class="o">=</span><span class="mi">1</span><span class="p">))</span>
<span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
</pre></div>
</div>
<p>In contrast, using <a class="reference internal" href="../modules/adapters/select.html#pika.adapters.select_connection.SelectConnection" title="pika.adapters.select_connection.SelectConnection"><code class="xref py py-meth docutils literal"><span class="pre">pika.adapters.select_connection.SelectConnection()</span></code></a> and the other asynchronous adapters is more complicated and less pythonic, but when used with other asynchronous services can have tremendous performance improvements. In the following code example, all of the same parameters and values are used as were used in the previous example:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">pika</span>
<span class="c1"># Step #3</span>
<span class="k">def</span> <span class="nf">on_open</span><span class="p">(</span><span class="n">connection</span><span class="p">):</span>
<span class="n">connection</span><span class="o">.</span><span class="n">channel</span><span class="p">(</span><span class="n">on_channel_open</span><span class="p">)</span>
<span class="c1"># Step #4</span>
<span class="k">def</span> <span class="nf">on_channel_open</span><span class="p">(</span><span class="n">channel</span><span class="p">):</span>
<span class="n">channel</span><span class="o">.</span><span class="n">basic_publish</span><span class="p">(</span><span class="s1">'test_exchange'</span><span class="p">,</span>
<span class="s1">'test_routing_key'</span><span class="p">,</span>
<span class="s1">'message body value'</span><span class="p">,</span>
<span class="n">pika</span><span class="o">.</span><span class="n">BasicProperties</span><span class="p">(</span><span class="n">content_type</span><span class="o">=</span><span class="s1">'text/plain'</span><span class="p">,</span>
<span class="n">delivery_mode</span><span class="o">=</span><span class="mi">1</span><span class="p">))</span>
<span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
<span class="c1"># Step #1: Connect to RabbitMQ</span>
<span class="n">parameters</span> <span class="o">=</span> <span class="n">pika</span><span class="o">.</span><span class="n">URLParameters</span><span class="p">(</span><span class="s1">'amqp://guest:guest@localhost:5672/</span><span class="si">%2F</span><span class="s1">'</span><span class="p">)</span>
<span class="n">connection</span> <span class="o">=</span> <span class="n">pika</span><span class="o">.</span><span class="n">SelectConnection</span><span class="p">(</span><span class="n">parameters</span><span class="o">=</span><span class="n">parameters</span><span class="p">,</span>
<span class="n">on_open_callback</span><span class="o">=</span><span class="n">on_open</span><span class="p">)</span>
<span class="k">try</span><span class="p">:</span>
<span class="c1"># Step #2 - Block on the IOLoop</span>
<span class="n">connection</span><span class="o">.</span><span class="n">ioloop</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
<span class="c1"># Catch a Keyboard Interrupt to make sure that the connection is closed cleanly</span>
<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span>
<span class="c1"># Gracefully close the connection</span>
<span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
<span class="c1"># Start the IOLoop again so Pika can communicate, it will stop on its own when the connection is closed</span>
<span class="n">connection</span><span class="o">.</span><span class="n">ioloop</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
</pre></div>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h4>Previous topic</h4>
<p class="topless"><a href="blocking_consumer_generator.html"
title="previous chapter">Using the BlockingChannel.consume generator to consume messages</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="blocking_delivery_confirmations.html"
title="next chapter">Using Delivery Confirmations with the BlockingConnection</a></p>
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="../_sources/examples/comparing_publishing_sync_async.rst.txt"
rel="nofollow">Show Source</a></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../search.html" method="get">
<div><input type="text" name="q" /></div>
<div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="blocking_delivery_confirmations.html" title="Using Delivery Confirmations with the BlockingConnection"
>next</a> |</li>
<li class="right" >
<a href="blocking_consumer_generator.html" title="Using the BlockingChannel.consume generator to consume messages"
>previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">pika 0.11.0 documentation</a> »</li>
<li class="nav-item nav-item-1"><a href="../examples.html" >Usage Examples</a> »</li>
</ul>
</div>
<div class="footer" role="contentinfo">
© Copyright 2009-2017, Tony Garnock-Jones, Gavin M. Roy, Pivotal and others..
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.5.
</div>
</body>
</html>
|