Hi,
Hi,
I'm Gary and working on the OpenStack project. I have run into a problem
and maybe you can help or can suggest someone who can.
The communication between the different modules is done with QPID. We
are using python. If the service that I am running starts before qpidd
then it hangs and does not recover. Even when the qpidd daemon starts it
does not recover.
The reason is that we do eventlet.monkey_patch(). The script below
easily shows a reproduction of the problem. If the lines below in red
are commented out the the script recovers when qpidd starts. If not then
it hangs. Please note that if the sockets are not patched then this
works. We need all to be patched.
Any clues or direction will be greatly appreciated.
Thanks
Gary
#!/usr/bin/env python
import eventlet
eventlet.monkey_patch()
import os
import time
from qpid.messaging import endpoints
print "QPID Test!"
session = None
consumers = {}
consumer_thread = None
default_params = dict(hostname='localhost',
port=5672,
username='',
password='')
params = {}
for key in default_params.keys():
params.setdefault(key, default_params[key])
broker = params['hostname'] + ":" + str(params['port'])
# Create the connection - this does not open the connection
print "======> broker %s" % broker
connection = endpoints.Connection(broker)
# Check if flags are set and if so set them for the connection
# before we call open
connection.username = params['username']
connection.password = params['password']
connection.sasl_mechanisms = ''
connection.reconnect = True
connection.heartbeat = 60
connection.protocol = 'tcp'
connection.tcp_nodelay = True
while True:
try:
connection.open()
except endpoints.exceptions.ConnectionError, e:
print 'Unable to connect to AMQP server: %s' % e
time.sleep(1)
else:
break
print 'Connected to AMQP server on %s' % broker