问题标签 [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.
django - Django导入错误'没有名为django的模块'
当我尝试在 openshift 上启动我的 django 应用程序时,我收到以下消息。因此部署失败......
这个应用程序是我几个月前设置的应用程序的副本。我更改了所有相关的路径、名称等。它在本地运行良好。
最后一个命令 __init__.py 在 virtualenv 之外运行是不是很奇怪?
我正在使用 python2.7 墨盒和 github openshift 示例https://github.com/openshift/django-example这个应用程序使用 django 1.8.0 作为依赖项。
这是从 djangoProject.settings 安装的应用程序
Django 已安装:
在进一步玩弄之后,我可以说它与这些 INSTALLED_APPS 中的一个或全部有关:
这是点冻结:
python - Kombu+RabbitMQ:检查队列是否为空
建筑学
考虑一个带有数据库记录的系统。每条记录可以是一个live
或expired
状态;live
应使用外部软件模块定期处理记录。
我已经使用经典的生产者 - 使用 Kombu 和 RabbitMQ 的消费者架构解决了这个问题。生产者每隔几秒钟从数据库中获取记录,消费者处理它们。
问题
事件的数量live
变化很大,在高峰时段,消费者无法处理负载,队列被数千个项目堵塞。
我想让系统自适应,这样如果队列为空,生产者就不会向消费者发送新事件。
我试过什么
- 搜索 Kombu 文档/API
- 检查队列对象
- 使用 RabbitMQ REST API
http://<host>:<port/api/queues/<vhost>/<queue_name>
:. 它有效,但它是另一种维护机制,我更喜欢 Kombu 中的优雅解决方案。
如何使用 Python 的 Kombu 检查 RabbitMQ 是否为空?
rabbitmq - 添加新消费者时出错
当我尝试current_app
通过发出控制命令从 celery 导入添加新的消费者(队列)时,出现以下错误。
记录错误的详细信息如下:
我不明白这个错误。我正在传递一个与日志中提到的不同的队列名称。
任何帮助将不胜感激。谢谢。
注意:此问题在设置 MAX_TASK_PER_CHILD 值后开始出现。这与错误有关吗?
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 的作者)慷慨地提供了一些指导,但我想扩展一点,看看其他人是否对此事有一些想法。
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
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
rabbitmq - 如何使用 Kombu 处理多个消费者连接?
我正在尝试使用 Kombu 连接到多个 RabbitMQ 主机,但是,与我发现的其他示例不同,目标不是使用多个主机作为后备,我只想能够处理相同的连接线。
我在 Kombu wiki 上使用连接池遇到了这个示例,但它没有展示如何同时使用两个连接,
解决这个问题的正确方法是什么?
python - Celery - 从队列中读取非结构化消息
我正在编写一个 Django 应用程序,我想从 rabbitMQ 读取消息并将一些更改应用到我的数据库中。我的问题是生产者没有使用 celery,我从 celery 收到错误消息,因为消息无效。错误是:
我该如何处理?我也试过kombu,但问题是它不像芹菜那么容易;它不能在后台运行,因此很难与 Django 应用程序集成。
python - 无法从 Python 连接到 RabbitMQ
我正在学习 Python,但遇到了奇怪的问题。我在我的 macOS Sierra 本地机器上运行 RabitMQ。从 python 脚本连接到 RabbitMQ 服务器总是失败并出现套接字超时错误。同时我可以通过 telnet 连接。运行 Python 2.7 和库 kombu:
结果:
它需要几秒钟并返回超时。此时在 RabbitMq 日志中,我看到:
防火墙已关闭。Telnet 连接成功:
我该如何调试这个问题?
python - 在 pytest 中模拟连接类
我有一个继承的类,kombu.ConsumerProducerMixin
我想在没有实际运行 rabbitmq 服务的情况下对其进行测试。
在我的测试文件中,我执行了以下操作:
使用调试器进入Aggregator.__init__
,我看到它connection
仍然没有被修补为一个Mock
实例:
我的问题是如何正确修补连接,这样我就不需要rabbitmq 来运行测试?