[rabbitmq-discuss] Pika problem, channel starts consuming before I call start_consuming(), then raises Queue.DeclareOk KeyError
Aaron Voelker
aaron at contextlogic.com
Wed Sep 21 22:26:59 BST 2011
Environment: Python 2.6.6, Ubuntu 10.10, Pika 0.95. I have reproduced
this problem on several machines with the same specs.
Description of Test: Publish to test1, then consume from test1 and
test2.
What Happens: The queue with the message begins consuming before I
have even told it to start_consuming. Pika seems to get into a weird
state, and then throws a Queue.DeclareOk KeyError.
"""
In Callback Hello World
Traceback (most recent call last):
File "./rabbittests.py", line 31, in <module>
channel.queue_declare(queue=queue_name)
File "/usr/local/lib/python2.6/dist-packages/pika/spec.py", line
2437, in queue_declare
[Queue.DeclareOk])
File "/usr/local/lib/python2.6/dist-packages/pika/adapters/
blocking_connection.py", line 221, in rpc
frame = self._frames[reply]
KeyError: 'Queue.DeclareOk'
"""
The Code:
#!/usr/bin/python
import pika
######### Producer Code
connection =
pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
for queue_name in ('test1', 'test2'):
channel.queue_declare(queue=queue_name)
channel.basic_publish(exchange='', routing_key='test1', body='Hello
World')
connection.close()
######### Consumer Code
connection =
pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
def callback(ch, method, properties, body):
print "In Callback", body
ch.basic_ack(delivery_tag = method.delivery_tag)
for queue_name in ('test1', 'test2'):
channel.queue_declare(queue=queue_name)
channel.basic_consume(callback, queue=queue_name)
assert False # NOTE: this doesn't execute!
channel.start_consuming()
More information about the rabbitmq-discuss
mailing list