python - Pika blocking_connection.py 随机超时连接到 RabbitMQ

标签 python rabbitmq rpc pika python-pika

我有一个在机器上运行的 rabbit mq

  • 客户端和rabbitMQ都在同一个网络上运行
  • rabbitMQ 有很多客户端
  • 我可以从 rabbitMQ ping 客户端并返回
  • 机器之间测得的最长延迟为 12.1 毫秒
  • 网络详细信息:标准交换机网络(在单个物理机上运行的虚拟机网络 - 使用 vmware VC)

我在初始化 RPC 连接时随机超时

/usr/lib/python2.6/site-packages/pika-0.9.5-py2.6.egg/pika/adapters/blocking_connection.py

问题是超时时间不一致并且时有发生。

当手动测试此问题并从同一台机器运行 blocking_connection.py 1000 次时,它没有超时累积。

这是我失败时得到的错误:

2013-04-23 08:24:23,396 runtest-trigger.24397 24397 DEBUG      producer_rabbit initiate_rpc_connection Connecting to RabbitMQ RPC queue rpcqueue_java on host: auto-db1
2013-04-23 08:24:25,350 runtest-trigger.24397 24397 ERROR      testrunner go   Run 1354: cought exception: timed out
Traceback (most recent call last):
  File "/testrunner.py", line 193, in go
    self.set_runparams(jobid)
  File "/testrunner.py", line 483, in set_runparams
    self.runparams.producers_testrun = self.initialize_producers_testrun(self.runparams)
  File "/basehandler.py", line 114, in initialize_producers_testrun
    producer.set_testcase_checkout()
  File "/baseproducer.py", line 73, in set_testcase_checkout
    self.checkout_handler = pm_checkout.get_producer(self.testcasecheckout)
  File "/producer_manager.py", line 101, in get_producer
    producer = self.load_producer(plugin_dir, producer_name)
  File "/producer_manager.py", line 20, in load_producer
    producer = getattr(producer_module, 'Producer')(producer_name, self.runparams)
  File "/producer_rabbit.py", line 13, in __init__
    self.initiate_rpc_connection()
  File "/producer_rabbit.py", line 67, in initiate_rpc_connection
    self.connection = pika.BlockingConnection(pika.ConnectionParameters( host=self.conf.rpc_proxy))
  File "/usr/lib/python2.6/site-packages/pika-0.9.5-py2.6.egg/pika/adapters/blocking_connection.py", line 32, in __init__
    BaseConnection.__init__(self, parameters, None, reconnection_strategy)
  File "/usr/lib/python2.6/site-packages/pika-0.9.5-py2.6.egg/pika/adapters/base_connection.py", line 50, in __init__
    reconnection_strategy)
  File "/usr/lib/python2.6/site-packages/pika-0.9.5-py2.6.egg/pika/connection.py", line 170, in __init__
    self._connect()
  File "/usr/lib/python2.6/site-packages/pika-0.9.5-py2.6.egg/pika/connection.py", line 228, in _connect
    self.parameters.port or  spec.PORT)
  File "/usr/lib/python2.6/site-packages/pika-0.9.5-py2.6.egg/pika/adapters/blocking_connection.py", line 44, in _adapter_connect
    self._handle_read()
  File "/usr/lib/python2.6/site-packages/pika-0.9.5-py2.6.egg/pika/adapters/base_connection.py", line 151, in _handle_read
    data = self.socket.recv(self._suggested_buffer_size)
timeout: timed out

请帮忙

最佳答案

我遇到了类似的问题。如果一切看起来都很好,那么您很可能有某种错误的配置,例如绑定(bind)不好。如果配置错误,那么您将得到一个超时,因为脚本无法到达它认为需要去的地方,所以在这种情况下错误可能是错误引导。

对于我的问题,我的 rabbitmq.config 文件和我的绑定(bind)都有问题,并且必须使用我显示的 python 解决方案:RabbitMQ creating queues and bindings from a command line 在我展示的命令行示例中。正确更新和配置后,一切正常。希望这能让您朝着正确的方向前进。

关于python - Pika blocking_connection.py 随机超时连接到 RabbitMQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16163308/

相关文章:

python的 ".format"函数

c - ONC RPC 从服务器发送结构中的字符

visual-c++ - Visual C++ 6.0 名称修改,即使在 extern "C"和 dllexport 内,也不会生成 RPC stub

android - 将 matplotlib 集成到 android 应用程序中?

python - 日志模块在文件的同一行上打印日志

erlang - 有没有办法打印配置参数?

openssl - RHEL7 上的 RabbitMQ 服务器重置 SSL 连接

python - Twisted RPC 消息聚合

python - 在初始化时填充一个 defaultdict

rabbitmq - 鼠兔偶尔丢弃 basic_publish 消息