This file is indexed.

/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 &#8212; 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> &#187;</li>
          <li class="nav-item nav-item-1"><a href="../examples.html" accesskey="U">Usage Examples</a> &#187;</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">&#39;amqp://guest:guest@localhost:5672/</span><span class="si">%2F</span><span class="s1">&#39;</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">&#39;test_exchange&#39;</span><span class="p">,</span>
                      <span class="s1">&#39;test_routing_key&#39;</span><span class="p">,</span>
                      <span class="s1">&#39;message body value&#39;</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">&#39;text/plain&#39;</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">&#39;test_exchange&#39;</span><span class="p">,</span>
                            <span class="s1">&#39;test_routing_key&#39;</span><span class="p">,</span>
                            <span class="s1">&#39;message body value&#39;</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">&#39;text/plain&#39;</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">&#39;amqp://guest:guest@localhost:5672/</span><span class="si">%2F</span><span class="s1">&#39;</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> &#187;</li>
          <li class="nav-item nav-item-1"><a href="../examples.html" >Usage Examples</a> &#187;</li> 
      </ul>
    </div>
    <div class="footer" role="contentinfo">
        &#169; 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>