问题标签 [kombu]

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 投票
2 回答
2274 浏览

django - Django导入错误'没有名为django的模块'

当我尝试在 openshift 上启动我的 django 应用程序时,我收到以下消息。因此部署失败......

这个应用程序是我几个月前设置的应用程序的副本。我更改了所有相关的路径、名称等。它在本地运行良好。

最后一个命令 __init__.py 在 vi​​rtualenv 之外运行是不是很奇怪?

我正在使用 python2.7 墨盒和 github openshift 示例https://github.com/openshift/django-example这个应用程序使用 django 1.8.0 作为依赖项。

这是从 djangoProject.settings 安装的应用程序

Django 已安装:

在进一步玩弄之后,我可以说它与这些 INSTALLED_APPS 中的一个或全部有关:

这是点冻结:

0 投票
1 回答
2380 浏览

python - Kombu+RabbitMQ:检查队列是否为空

建筑学

考虑一个带有数据库记录的系统。每条记录可以是一个liveexpired状态;live应使用外部软件模块定期处理记录。

我已经使用经典的生产者 - 使用 Kombu 和 RabbitMQ 的消费者架构解决了这个问题。生产者每隔几秒钟从数据库中获取记录,消费者处理它们。

在此处输入图像描述

问题

事件的数量live变化很大,在高峰时段,消费者无法处理负载,队列被数千个项目堵塞。

我想让系统自适应,这样如果队列为空,生产者就不会向消费者发送新事件。

我试过什么

  • 搜索 Kombu 文档/API
  • 检查队列对象
  • 使用 RabbitMQ REST API http://<host>:<port/api/queues/<vhost>/<queue_name>:. 它有效,但它是另一种维护机制,我更喜欢 Kombu 中的优雅解决方案。

如何使用 Python 的 Kombu 检查 RabbitMQ 是否为空?

0 投票
0 回答
69 浏览

rabbitmq - 添加新消费者时出错

当我尝试current_app通过发出控制命令从 celery 导入添加新的消费者(队列)时,出现以下错误。

记录错误的详细信息如下:

我不明白这个错误。我正在传递一个与日志中提到的不同的队列名称。

任何帮助将不胜感激。谢谢。

注意:此问题在设置 MAX_TASK_PER_CHILD 值后开始出现。这与错误有关吗?

0 投票
0 回答
900 浏览

python - 将 zmq 作为(kombu)message_queue 传输集成到 flask-socketio 应用程序中

我正在开发与zmq集成的Flask-SocketIO应用程序。该应用程序的基本前提是 Flask-SocketIO Web 服务器接收到 zmq 消息,然后将该 zmq 消息转换为 SocketIO 消息,然后发送到客户端(浏览器)。我有应用程序工作,但不完全是我希望它工作的方式。

zmq 事件侦听器需要位于与主服务器进程不同的进程上。我能够使用 Redis 和 RabbitMQ 作为消息队列来促进 SocketIO 从非服务器进程发出。好,很好。所以有什么问题?

问题是我真的很想使用 zmq 作为消息队列而不是 Redis 或 RabbitMQ,因为我已经在我的应用程序中集成了 zmq。所以我在 Flask-SocketIO 文档中读到Kombu是支持其他类型消息队列的机制。嗯不错。但后来我注意到 zmq 作为传输已从Kombu 的最新版本中删除。据我所知,它仅在作为传输选项时才具有实验性,例如在Kombu 3.0.37中。

我的第一种方法是通过 Kombu 3.0.37 尝试 zmq 作为消息传输,但这不起作用。我仍在试图确定这是为什么。但是在看了一点源代码之后,我现在最好的猜测是多个进程正试图在同一个端口上打开一个 PULL 套接字,即使在一个简单的独立示例中也是如此。这是有道理的。在这方面,我的下一步是手动创建一个独立于 zmq 传输代码的 PULL 套接字,并以某种方式将其作为一种单例传递给 zmq 传输代码使用。

我正在使用的另一种方法是让 zmq 在Hello World Kombu 示例中充当传输工具。我将示例代码中的连接字符串替换为zmq+tcp://localhost. 很明显,我不了解如何将 zmq 用作消息队列传输。如果我运行发布者代码,我可以发送消息。但是当我几秒钟后运行客户端代码时,它说队列是空的。这让我认为,为了让 zmq 作为传输器工作,我可能需要某种外部 zmq 消息代理,我假设我需要自己组装。但我还没有弄清楚它是如何工作的。

有什么建议么?尝试将 zmq 用作传输是浪费时间,还是应该继续走这条路?Miguel Grinberg(Flask-SocketIO 的作者)慷慨地提供了一些指导,但我想扩展一点,看看其他人是否对此事有一些想法。

0 投票
3 回答
14795 浏览

python-2.7 - 获取 ImportError:无法导入名称 OrderedDict

我收到错误

ImportError:无法导入名称 OrderedDict

在我的 ubuntu 14.04 机器上本地安装服务器时。
我已经尝试手动安装orderdict,也尝试升级kombu,但它仍然给出错误。完整的回溯添加在下面-

rishav@Swastik:~/open-event-orga-server$ sudo python create_db.py
Traceback(最近一次调用最后):文件“create_db.py”,第 5 行,
从应用程序导入 current_app
文件“/home/rishav/open -event-orga-server/app/ init .py”,第 23 行,
从 celery 导入 Celery
文件“/usr/local/lib/python2.7/dist-packages/celery/init .py ”,第 133 行,在
from celery import 5 # noqa File "/usr/local/lib/python2.7/dist-packages/celery/five.py", line 153, in
from kombu.utils.compat import OrderedDict # noqa
ImportError: cannot import name OrderedDict

0 投票
0 回答
301 浏览

python - python supervisord 转义哈希 (#)

使用配置了 redis 后端的 celery 获得了一个 python 应用程序,并且正在使用主管启动服务。问题是,我的 Redis 密码中有一个哈希#字符,因此出现如下错误

问题是,它XdrB4是 Redis 密码的一部分。紧跟在 4 之后的字符是#. 当我删除哈希时,设置工作。我不得不完全更改整个密码,但我想知道是什么原因造成的。

Redis 连接设置

Supervisord.conf

我应该逃避哈希吗?如果是这样,我用什么字符来逃避它?我试过反斜杠,双哈希等没有任何效果。

应用版本:

python3.5 celery==3.1.23 kombu==3.0.35 redis==2.10.5

0 投票
0 回答
509 浏览

rabbitmq - 如何使用 Kombu 处理多个消费者连接?

我正在尝试使用 Kombu 连接到多个 RabbitMQ 主机,但是,与我发现的其他示例不同,目标不是使用多个主机作为后备,我只想能够处理相同的连接线。

我在 Kombu wiki 上使用连接池遇到了这个示例,但它没有展示如何同时使用两个连接,

解决这个问题的正确方法是什么?

0 投票
0 回答
121 浏览

python - Celery - 从队列中读取非结构化消息

我正在编写一个 Django 应用程序,我想从 rabbitMQ 读取消息并将一些更改应用到我的数据库中。我的问题是生产者没有使用 celery,我从 celery 收到错误消息,因为消息无效。错误是:

我该如何处理?我也试过kombu,但问题是它不像芹菜那么容易;它不能在后台运行,因此很难与 Django 应用程序集成。

0 投票
1 回答
1539 浏览

python - 无法从 Python 连接到 RabbitMQ

我正在学习 Python,但遇到了奇怪的问题。我在我的 macOS Sierra 本地机器上运行 RabitMQ。从 python 脚本连接到 RabbitMQ 服务器总是失败并出现套接字超时错误。同时我可以通过 telnet 连接。运行 Python 2.7 和库 kombu:

结果:

它需要几秒钟并返回超时。此时在 RabbitMq 日志中,我看到:

防火墙已关闭。Telnet 连接成功:

我该如何调试这个问题?

0 投票
1 回答
1587 浏览

python - 在 pytest 中模拟连接类

我有一个继承的类,kombu.ConsumerProducerMixin我想在没有实际运行 rabbitmq 服务的情况下对其进行测试。

在我的测试文件中,我执行了以下操作:

使用调试器进入Aggregator.__init__,我看到它connection仍然没有被修补为一个Mock实例:

我的问题是如何正确修补连接,这样我就不需要rabbitmq 来运行测试?