我的项目要求客户端直接向Rabbit MQ发送消息,我们需要对此进行负载测试。
我试过PIKA,在普通的python文件中工作正常,但是当我试着在Locust中实现它时,由于兼容性问题,我开始出错
我试过PIKA Async、B-Rabbit等,但都不适用于Locust(Gevent)
我不必与蝗虫集成,但只要在这些Python文件上导入蝗虫就足以触发错误。
我在几个博客上读到过Geevent与鼠兔不兼容。
class RMQ:
def __init__(self) -> None:
self.connection = pika.BlockingConnection(pika.ConnectionParameters('localhost', credentials=pcredentails))
self.channel = self.connection.channel()
def connect(self):
self.channel.basic_publish(exchange='locust_events', routing_key='python3', body='Hello World!')
print("[x] Sent 'Hello World!'")
def close(self):
self.channel.close()
self.connection.close()
错误:
BlockingIOError: [WinError 10035] A non-blocking socket operation could not be completed immediately
有人请让我知道一个可能的方法来解决这个问题
注意:B-rabbit确实说它是线程安全的,但当我发布“从服务器阅读超时”时,它仍然抛出错误,延迟12秒,只有当我使用locus时才会发生这种情况,否则它会很快
1条答案
按热度按时间ckocjqey1#
Pika有一个
GeventConnection
连接类,这就是你应该使用的。**注意:**RabbitMQ团队监控
rabbitmq-users
邮件列表,仅在某些时候回答StackOverflow上的问题。