问题标签 [pyzmq]
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.
python - 从另一个线程关闭挂起的 zmq 套接字
是否有某种方法可以从 Python 中的另一个线程关闭特定的挂起的 recv zmq 套接字,而不会破坏可能正在使用的其他套接字?以下代码似乎没有退出;替换sock.close()
withctx.destroy()
会导致它退出,但这显然会破坏上下文中的所有套接字:
python - 结合 tornado 和 zmq ioloops:对等异常重置连接
当我尝试按照pyzmq 官方文档中的描述组合 Tornado 和 pyzmq ioloops 时,我遇到了一个烦人的(虽然不是关键的)问题。
我有一个运行龙卷风(T)服务器的进程,它接受来自客户端(C)的 REST API 请求,并通过 ZMQ 传输到另一个真正工作的进程(Z)代理它们。
如果 C 在 Z 回复 T之前关闭连接,则 Z(龙卷风)会输出一长串异常跟踪(见底部)。想象以下示例:
这个例子实际上并没有与任何 ZMQ 对等体对话,它只是将 pyzmq ioloop 附加到 tornado 的 ioloop。不过,足以说明问题。
从控制台一台运行服务器:
从控制台二运行客户端并在服务器回复之前中断它(即在 5 秒内):
服务器的输出是:
注意:这似乎是与 pyzmq 相关的问题,因为在排除 pyzmq ioloop 后消失了。
服务器不会死,它可以被其他客户端使用,所以问题并不严重。但是,在日志文件中找到这些巨大的令人困惑的痕迹是非常烦人的。
那么,有没有什么众所周知的方法可以解决这个问题呢?谢谢。
zeromq - ZMQ REP,知道谁发送请求
我目前正在将 zmq 与 python 一起使用。服务器正在使用 REP 套接字。
我有办法在接收消息时知道是谁发送的吗?如果收到 2 条消息,我只需要知道它们是否来自同一个用户,因此例如 uid 就足够了。
python - pyzmq 非阻塞套接字
有人可以指出一个带有 Python 绑定的 REQ/REP 非阻塞 ZeroMQ (0MQ) 示例吗?也许我对ZMQ的理解是错误的,但我在网上找不到一个例子。
我在 Node.JS 中有一个服务器,可以将多个客户端的工作发送到服务器。这个想法是服务器可以启动一堆并行操作的作业,而不是为一个客户端处理数据,然后为下一个客户端处理数据
python - ZeroMQ rrclient-broker 不工作
我正在尝试运行来自https://github.com/imatix/zguide的 Python 和 Node.JS 示例,用于 client-broker-worker 架构(rrclient、rrworker、rrbroker)。
我可以确认 Python 实现工作正常,Node.JS 实现工作正常,但是当我尝试将 Node.JS rrclient 与 Python rrbroker 结合使用时,整个事情崩溃了,我收到以下错误:
Python 在使用 libzmq.3.dylib 插件时意外退出。
并且代理出现以下错误:断言失败:(prefetched_msg.flags () & msg_t::identity) == 0 (router.cpp:276) Abort trap: 6
似乎 Node.JS 在连接到 Python 时遇到问题。这似乎也提出了基本的 REQ/REP 架构,而不仅仅是客户端代理工作者。
zeromq - ZeroMQ/ZMQ 推/拉模式的用处
在试验ZeroMQ
Push/Pull
(他们所说的Pipeline
)套接字类型时,我很难理解这种模式的实用性。它被称为“负载平衡器”。
给定单个服务器向多个工作人员发送任务,Push/Pull 将在所有客户端之间平均分配任务。3 个客户端和 30 个任务,每个客户端获得 10 个任务:client1 获得任务 1、4、7、... client2、2、5、...等等。很公平。字面上地。
然而,在实践中,任务复杂性或客户端计算资源(或可用性)通常是非均匀混合的,那么这种模式就会被严重破坏。所有任务似乎都是提前安排好的,服务器不知道客户端的进度,甚至不知道它们是否可用。如果 client1 宕机,它的剩余任务不会发送给其他客户端,而是为 client1 排队。如果 client1 仍然关闭,则永远不会处理这些任务。相反,如果客户端处理其任务的速度更快,则它不会获得更多任务并保持空闲状态,因为它们仍然为其他客户端安排。
使用REQ/REP
是一种可能的解决方案;然后只将任务分配给可用资源。
所以我错过了什么吗?如何Push/Pull
有效使用?有没有办法使用这种套接字类型来处理客户端、任务等的不对称性?
谢谢!
这是一个简单的 Python 示例:
.
在命令行上启动 3 个带有延迟参数的客户端(即 1、1 和 0.1),然后启动服务器,看看所有任务是如何均匀分布的。然后杀死其中一个客户端以查看其剩余任务未得到处理。
取消注释指示将其切换到Req/Rep
类型套接字的行并观察更有效的负载平衡器。
node.js - 从 zmq 套接字返回值
我正在使用 Socket.IO 让客户端网页从我的 Node.JS 服务器动态获取数据。在服务器端,我使用 zeromq 套接字库(REQ/REP 结构,参见 zguide 的 rrclient.js 示例)将请求转发到 Python 后端。
但是,由于我的服务器充当 socket.io 服务器,我必须按如下方式包装我的响应,以便将其发送回特定的客户端:
因此 fetch_data 函数使用 zmq 套接字 (socket.send) 将请求推送到服务器。
但是 Node ZMQ 套接字使用 socket.on('message',function(){}); 响应请求。侦听器,实际上并没有返回任何东西。
如何使用 socket.on('message',function(){}); 向发起 socket.send() 请求的特定函数返回一个值?
换句话说,如何让客户端的 socket.io 请求让 Node.JS 使用 ZMQ 从 python 后端获取相关数据,然后将其返回给 socket.io 客户端?(当然是以非阻塞方式)
python - 多线程和 ZMQ DEALER/REP hello world 不起作用
首先是我的代码(很大程度上来自 ZMQ 文档http://zguide.zeromq.org/py:mtserver):
我已经用 inproc 和 tcp 套接字尝试了这段代码。
- 当工作人员尝试连接时,inproc 会出错
- TCP 只是在经销商发送后等待,工人没有打印,经销商没有收到其他消息
- 我已经想到了慢连接器问题并添加了一个睡眠(一个在工人连接之前,一个在经销商的 send() 之前):这只会导致 inproc 的行为与 TCP 相同。
PS:我很抱歉camelCase,但我对它上瘾了。
zeromq - 如何设置 pyzmq 套接字排队超时
我已经连接了 zeromq,“msg_in”已经排队。如果在该时间段内没有新消息队列到来,则设置超时。如何设置超时。以下是核心代码
python - 安装 ZeroMQ 时出错
我正在克服错误。我已按照 ZeroMQ 官方网站上给出的步骤进行操作。