<div><br></div><div><div class="gmail_extra"><div class="gmail_quote">On Mon, Nov 19, 2012 at 1:51 PM, Anthony Suh <span dir="ltr">&lt;<a href="mailto:suhprano@gmail.com" target="_blank">suhprano@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Hello, I&#39;m having trouble retrieving specific values (headers) from the basicproperties list.</blockquote>

<div><br></div><div><div>Hi,</div><div><br></div><div>The headers property is an attribute of the property object and is a dictionary. Here&#39;s an example publisher and consumer:</div><div><br></div><b>publish.py:</b><div>

<br></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><span style="font-family:&#39;courier new&#39;,monospace">import pika</span></div><div><font face="courier new, monospace">import time</font></div>

<div><span style="font-family:&#39;courier new&#39;,monospace"><br></span></div><div><span style="font-family:&#39;courier new&#39;,monospace">connection = pika.BlockingConnection()</span></div><div><span style="font-family:&#39;courier new&#39;,monospace">channel = connection.channel()</span></div>

<div><span style="font-family:&#39;courier new&#39;,monospace">for x in range(0, 100):</span></div><div><font face="courier new, monospace">� � channel.basic_publish(exchange=&#39;test&#39;,</font></div><div><font face="courier new, monospace">� � � � � � � � � � � � � routing_key=&#39;test&#39;,</font></div>

<div><font face="courier new, monospace">� � � � � � � � � � � � � body=&#39;Hello World!&#39;,</font></div><div><font face="courier new, monospace">� � � � � � � � � � � � � properties=pika.BasicProperties(content_type=&#39;text/plain&#39;,</font></div>

<div><font face="courier new, monospace">� � � � � � � � � � � � � � � � � � � � � � � � � � � � � app_id=&#39;test&#39;,</font></div><div><font face="courier new, monospace">� � � � � � � � � � � � � � � � � � � � � � � � � � � � � headers={&#39;foo&#39;: &#39;bar&#39;, &#39;baz&#39;: &#39;quux&#39;},</font></div>

<div><font face="courier new, monospace">� � � � � � � � � � � � � � � � � � � � � � � � � � � � � timestamp=int(time.time()),</font></div><div><font face="courier new, monospace">� � � � � � � � � � � � � � � � � � � � � � � � � � � � � delivery_mode=1))</font></div>

</blockquote><div><div><br></div><div><b>consume.py:</b></div><div><br></div></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><font face="courier new, monospace">import pika</font></div><div>

<font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">connection = pika.BlockingConnection()</font></div><div><font face="courier new, monospace">channel = connection.channel()</font></div>

<div><span style="font-family:&#39;courier new&#39;,monospace">for method_frame, properties, body in channel.consume(&#39;test_queue&#39;):</span></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">� � # Display the message parts</font></div>

<div><font face="courier new, monospace">� � print &#39;Routing Key: %s&#39; % method_frame.routing_key</font></div><div><font face="courier new, monospace">� � print &#39;Headers: %r&#39; % properties.headers</font></div>

<div><font face="courier new, monospace">� � print &#39;Foo header: %s&#39; % properties.headers.get(&#39;foo&#39;)</font></div><div><font face="courier new, monospace">� � print &#39;Body: %s&#39; % body</font></div><div>

<font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">� � # Acknowledge the message</font></div><div><font face="courier new, monospace">� � channel.basic_ack(method_frame.delivery_tag)</font></div>

<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">� � # Break when 1 message was received</font></div><div><font face="courier new, monospace">� � if method_frame.delivery_tag == 1:</font></div>

<div><font face="courier new, monospace">� � � � break</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace"># Cancel the consumer and return any pending messages</font></div>

<div><font face="courier new, monospace">requeued_messages = channel.cancel()</font></div><div><font face="courier new, monospace">print &#39;Requeued %i messages&#39; % requeued_messages</font></div><div><font face="courier new, monospace"><br>

</font></div><div><font face="courier new, monospace"># Close the channel and the connection</font></div><div><font face="courier new, monospace">channel.close()</font></div><div><font face="courier new, monospace">connection.close()</font></div>

</blockquote><div><div><br></div><div><b>Output:</b></div><div><br></div></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><font face="courier new, monospace">Routing Key: test<br></font></div>

<div><div><font face="courier new, monospace">Headers: {&#39;foo&#39;: &#39;bar&#39;, &#39;baz&#39;: &#39;quux&#39;}</font></div><div><font face="courier new, monospace">Body: Hello World!</font></div><div><font face="courier new, monospace">Foo header: bar<br>

</font></div><div><font face="courier new, monospace">Requeued 266 messages</font></div></div></blockquote><div><div class="gmail_extra"><br>Hope this helps,</div><div class="gmail_extra"><br>Gavin</div></div></div><div>
<br>
</div><div><br></div><div>�</div></div>
</div></div>