问题标签 [python-pika]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
499 浏览

python - 启用持久传递模式后,强制工作人员立即接收失败的消息

我设置了一个RabbitMQ 服务器,在其中使用Python-Pika获取消息。问题是,如果我启用了持久传递模式,并且工作人员无法处理消息。它不会释放消息,而是会一直保留到消息,直到 RabbitMQ 连接被重置。

有没有办法确保无法处理的消息在合理的时间范围内从可用的工作人员(包括同一个工作人员)再次被拾起?

这是我当前的代码

这个想法是我永远不想丢失一条消息,而是希望它被重新发布,或者如果它失败了,我希望它再次被拾起。在工作人员成功处理消息之前,应该始终如此。这通常发生在其中一名工作人员无法打开与 HTTP 服务器的连接时。

0 投票
2 回答
4409 浏览

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

我有一个在机器上运行的兔子 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 次时,它不会产生超时。

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

请协助

0 投票
2 回答
6048 浏览

python - 使用 pika 获取 RabbitMQ 队列的消费者总数

以下代码是我用来计算消费者数量的代码:

现在我获得的计数是活跃消费者的数量。但是,当消费者从队列中消费时,此计数将打印为零。现在我需要从队列中消费的消费者总数。这出现了 RabbitMQ 管理(作为消费者:0 活跃 25 总计)

当队列中有消息时,有没有办法从队列中获取消费者总数的计数?

先感谢您

0 投票
1 回答
1254 浏览

python-2.7 - 如何在订阅时添加回调以写入文件

这可能是关于 python 回调和使用 pika 一样多的问题。我正在尝试开发一些代码来订阅 RabbitMQ 中的队列,处理任何已传递消息的有效负载,然后将该有效负载写入一系列(磁盘)文件。因此,使用http://www.rabbitmq.com/tutorials/tutorial-one-python.html上的简单“Hello World”示例,我在回调函数中添加了逻辑(顺便称为“回调” ) 将任何接收到的消息有效负载写入文件。

这是主要问题:我想编写一些额外的代码,如果某个时间段已经过去,例如 300 秒(5 分钟),那么进程应该关闭文件并创建一个新文件,并将收到的任何后续新消息写入那。等等 ...

但是 - 我看到的问题是只有当消息到达队列时才会调用回调函数。我想我需要一些测量经过时间的回调函数之外的过程......

基本原理是我想创建一组磁盘文件(所有文件都具有基于时间戳的唯一名称),其中包含 MQ 队列中接收到的消息。如果消息来得很慢,那么我关闭当前打开的文件(以便可以在下游进一步处理)并打开另一个。

我还注意到,在发出开始消费调用 (channel.start_sumption) 之后,没有达到下面的代码 - 为什么?

我玩过python的多处理模块,但到目前为止还没有运气。

这是一些带有伪代码注释的骨架代码:-

谢谢 !

0 投票
0 回答
739 浏览

rabbitmq - 如何从单个连接(pika/rabbitmq)创建新频道?

我正在使用 pika 0.9.13 编写一些 python 代码来连接到 RabbitMQ。我正在创建许多子进程(可能有 1000 个),并希望每个进程都能够发送到 RabbitMQ。仔细阅读,似乎最好的方法是创建一个连接,然后在该连接中创建通道。

任何人都可以建议如何最好地做到这一点?通常,代码如下所示:-

我应该使用什么类型的适配器(BlockingConnection?)...

提前致谢 !

0 投票
6 回答
33768 浏览

python - python导入pika时没有模块名称pika

我为在 Mac 上运行的 python 安装了 pika

我确保已安装,这是尝试重新安装时的响应,

但是当我在 *.py 上导入 pika 时,我得到了,

ImportError:没有名为 pika 的模块

我的python版本

如何让这个模块被 Python 识别?谢谢!

编辑 1

我这样称呼导入

这给出了错误,我可以暂时解决这个问题,

那么如何使路径永久化呢?谢谢!

0 投票
1 回答
1497 浏览

python - RabbitMQ python库检查状态

伙计们,我正在尝试检查错误的连接,并记录以提醒是否发生这种情况。

出于某种原因,这不起作用,并且正在吐出:

我怎样才能捕捉到失败并提醒他们并继续我的检查,而不是脚本爆发?

谢谢!

0 投票
1 回答
63 浏览

python-2.7 - 通过rabbitmq服务器发布订阅

我需要一个节点发送消息而另一个节点开始等待获取消息的场景。

每个节点收到消息后变成监听器,收到消息后又变成发布者。

0 投票
1 回答
10345 浏览

node.js - 通过 websocket 发送 RabbitMQ 消息

寻找一些代码示例来解决这个问题:-

想编写一些代码(Python 或 Javascript)作为 RabbitMQ 队列的订阅者,以便在接收到消息时通过 websocket 将消息广播到任何连接的客户端。

我查看了 Autobahn 和 node.js(使用“ amqp ”和“ ws ”),但无法让事情按需要工作。这是使用 node.js 的 javascript 中的服务器代码:-

使用此代码,我可以成功订阅 Rabbit 中的队列并接收发送到队列的任何消息。同样,我可以将 websocket 客户端(例如浏览器)连接到服务器并发送/接收消息。但是......如何在指示的点将 Rabbit 队列消息的有效负载作为 websocket 消息发送(“现在如何通过 WEBSOCKETS 发送”)?我认为这与陷入错误的回调有关,或者它们需要以某种方式嵌套......?

或者,如果这可以在 Python 中更容易地完成(通过 Autobahn 和 pika),那就太好了。

谢谢 !

0 投票
0 回答
556 浏览

python-2.7 - SIGHUP 信号在 python 2.7 中出现鼠兔异常

当我运行它并发送 SIGHUP 信号时,我有一个鼠兔消费者 ,它给了我一个例外

消费者测试.py

例外: