Python pika上下文管理器
我正在尝试编写一个上下文管理器,使用Python pika上下文管理器,python,python-3.x,rabbitmq,pika,Python,Python 3.x,Rabbitmq,Pika,我正在尝试编写一个上下文管理器,使用pika连接到rabbit。这就是它的样子 import pika class RabbitConnection: def __init__(self, host, user, password, queue_name, port=5627): self.host = host self.user = user self.password = password self.port
pika
连接到rabbit。这就是它的样子
import pika
class RabbitConnection:
def __init__(self, host, user, password, queue_name, port=5627):
self.host = host
self.user = user
self.password = password
self.port = port
self.queue_name = queue_name
def __enter__(self):
credentials = pika.PlainCredentials(self.user, self.password)
parameters = pika.ConnectionParameters(
host=self.host,
port=self.port,
credentials=credentials
)
self.connection = pika.BlockingConnection(parameters)
self.channel = self.connection.channel()
self.channel.queue_declare(queue=self.queue_name)
return self.channel
def __exit__(self):
self.connection.close()
但它不起作用。下面是向兔子发送消息的简单django视图
def send_message(request):
message = request.GET['message']
queue_name = 'hello'
with RabbitConnection(settings.RABBIT_HOST, settings.RABBIT_USER, settings.RABBIT_PASSWORD, queue_name) as rc:
rc.basic_publish(
exchange='',
routing_key=queue_name,
body=message,
)
return HttpResponse()
但是我在self.connection=pika.BlockingConnection(参数)
有趣的是,当我在没有上下文管理器的情况下使用相同的代码时,它可以工作(没有错误)
问题出在哪里?查看您正在使用的默认端口:
def __init__(self, host, user, password, queue_name, port=5627):
rabbitmq端口通常为5672…非常好,谢谢
def __init__(self, host, user, password, queue_name, port=5627):