问题标签 [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.

0 投票
2 回答
87 浏览

python - ZMQ软件与语言绑定的区别

ZMQ 软件(可从http://zeromq.org/intro:get-the-software获得)和语言绑定有什么区别?

由于我已经安装了语言绑定并且我的示例工作正常(用 python 编写),那么 ZMQ 软件有什么用?

0 投票
1 回答
257 浏览

python - 从并发请求的分布式工作中发回正确的信息

我已经构建了一个 Flask+nginx+gunicorn 应用程序,它通过一对 zmq 套接字与服务对话,该套接字又将请求发送给分布式工作人员并取回结果。

但是,我没有进行大量检查以查看是否将正确的信息发送回用户。这意味着有时如果用户 A 和用户 B 几乎同时请求他们的数据,结果可能最终会出现在错误的用户身上。

我猜我需要在请求中发送一些上下文(比如用户名)。当结果返回时,将其放入队列中,并以某种方式确保浏览器请求根据上下文选择正确的结果。

您将如何确保将数据发送给其合法所有者?

代码如下所示:

0 投票
1 回答
846 浏览

python - PyZMQ Gevent Websocket 连接错误

我正在尝试使用 python zmq 发布/订阅模式。我在客户端面临一个奇怪的问题。在客户端,我使用 pyzmq、gevent-websocket 和 bottle 作为 wsgi 服务器。虽然它对一个客户端非常有效,但其他客户端正在等待第一个客户端断开连接。在使用一个客户端时,如果我断开连接并重新连接,每次重新连接都会收到两次或更多消息。

我见过的所有示例都使用 while 循环来接收消息。我对这个while循环和寻找像socket.on_message这样的回调函数感到不舒服。出于实验目的,我编写了一个 node.js 版本,没有像这样的 while 循环,但在我的项目中节点被排除在外。节点版本在这里:

这里我不使用while循环。

我在 python 代码上做错了什么?

0 投票
2 回答
3143 浏览

python - ZeroMQ ROUTER 套接字无法向 REP 套接字发送消息

我通过使用 ZeroMQ 的路由器实现了一个简单的请求-回复架构。这适用于PyZMQ 版本 2.1.11。不幸的是,当我在PyZMQ 版本 14.0.0上测试它时,发送方(REQ)可以发送到路由器,然后路由器收到它的消息并发送到接收方(REP),但接收方没有收到消息!当我将 PyZMQ 从 2.1.11 升级到 14.0.0 时,我遇到了这个问题。

请求 <-> 路由器 <-> 代表

这是我的代码:

发件人.py

路由器.py

接收器.py

当我使用这种架构时:

routing with DEALER

The DEALER does not route to multiple receivers. DEALER only use round-robin method for sending messages to receivers. If ROUTER could be used instead of DEALER, then messages could be routed to specific receivers and will do round-robin between those.

0 投票
1 回答
804 浏览

python - 在 python 中使用倒置 zeromq pub-sub 进行测试

我确实在我的代码中使用了 pyzmq 2.2.0.1(Windows 或 Linux 上的 python27),当我运行它时它可以工作(也是 python 线程):

当我将 zmq 升级到 13.1.0(现在升级到 14.0.0)时,我发现这个测试不起作用。

我尝试搜索有关它的一些更改,但没有找到。当我在不同的进程上创建这个队列时,它可以工作,但我不想为我的测试打开新进程。有什么解释为什么它不起作用,我怎样才能正确地做这个测试?

谢谢。

0 投票
1 回答
731 浏览

python - pyzmq中的套接字句柄泄漏?

嗨 StackOverflow 的好人。

我正在使用 pyzmq 并且我有一些长时间运行的进程,这导致发现套接字句柄处于打开状态。我已将有问题的代码缩小到以下内容:

pyzmq 版本为 pyzmq-13.1.0

要么 pyzmq 中存在错误,要么我做错了什么。我希望你能帮帮我!!

谢谢!

0 投票
1 回答
34 浏览

python - 如何导入与 sys modul 同名的本地模块?

我已经编译了 pyzmq (python zeromq binding) 模块,并希望使用该模块而不是系统模块。

如何跳过从系统加载模块,以便我的 import zmq 首先在当前文件夹中搜索?

0 投票
1 回答
1631 浏览

python - 在 PyZMQ 中发送 NULL 消息

我正在尝试将以下基于 0MQ 的 HTTP 服务器示例翻译成 C 语言,请参见此处: Hintjens' blog into Python。

问题出在下一行,我尝试翻译 C 表达式

在 Python 中,我有以下堆栈跟踪:

实际上,sock.send 只能用于发送缓冲区或消息。有没有办法从 Python 以另一种方式使用 0MQ 的 zmq_send 来发送 NULL 帧?

顺便说一句,Github 条目中的注释显示即使在 C 中它也可能不会关闭与客户端的连接。如何要求远程客户端关闭其连接(在 Python 中)?

我在 Windows 32 位上使用 libzmq 4.0.1 和 PyZMQ 14.0.1 而不是 Python 3.3.2。

0 投票
0 回答
1094 浏览

python - 使用 Esky 和 ​​zmq 模块冻结应用程序

我正在尝试使用 Esky 和 ​​cx_freeze 冻结我的应用程序。

我的 setup.py 看起来像这样:

但是,似乎 pyzmq 没有正确包含在冻结中。

我不断得到:

关于如何解决这个问题的任何想法?

EDIT2::好的,有一个答案为我解决了它>> https://bitbucket.org/anthony_tuininga/cx_freeze/issue/55/failed-with-pyzmq-1401-py33-win-amd64egg

编辑:正如建议的那样,被迫使用 cython 后端还有另一个错误堆栈跟踪:

我猜加载本机存在问题libzmq.dll(但是,zmq.libzmq.pyd结果dist文件夹中有一些),有人解决了这个问题吗?

0 投票
2 回答
288 浏览

c++ - zmq 呼吸机/工人/水槽范式无法与子进程一起工作

我正在尝试复制 ZMQ 指南中描述的呼吸机/工人/水槽范例。我有与 ZMQ 示例中描述的相同的 Python Ventilator、相同的 C++ worker 和相同的 Python Sink。我想从一个主要的 Python 脚本启动呼吸机、工作程序和水槽,所以我在呼吸机和水槽周围创建了“类”包装器,这两个类都是 Python 模块“multiprocessing.Process”的子类。由于 C++ 是二进制文件,因此我使用 Python 的 subprocess.Popen 调用来启动它。

启动所有这些的顺序如下:

我发现当我像这样启动组件时没有数据通过系统。但是,如果我在自己的 shell 中启动 C++ 二进制文件,并且只从主 python 脚本启动 sinkObj 和 ventObj,它就可以正常工作。

如果这更像是一个 Python 问题而不是 ZMQ 问题,我提前道歉,但我没有遇到像 Python 子进程这样的问题。我也尝试过使用 os.system() 而不是子进程......但同样的问题。我把所有的代码放在这个网站上:https ://github.com/kkarrancsu/zmqtest 如果有人想测试一下。该 git 上有一个自述文件,它告诉您文件是什么。

关于为什么会发生这种情况的任何想法?

- - - - - - - - - - - - - 更新 - - - - - - - - - -

我发现,如果我创建一个简单地启动 C 二进制文件的 shell 脚本,并使用 os.system('run_the_shell_script') 调用该 shell 脚本,它就可以工作!所以这意味着我使用 subprocess.Popen(...) 的方式有问题,但似乎无法确定问题所在。我尝试使用 shell=True 标志,但它仍然挂起......