问题标签 [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 投票
0 回答
1016 浏览

ipython - 使用 Canopy 启动 IPython 笔记本时出错

尝试在 OS X 上从 Canopy 启动笔记本时出现错误。我正在从 github 上的最新版本安装。qtconsole 也会发生这种情况,所以我认为 zmq 有点奇怪。如果我使用 enpkg 安装 1.0,它会按预期工作。我也尝试从 github 安装 pyzmq,将作为安装的一部分的扩展链接到现有的 zmq(通过 MacPorts 的 3.2.3)。希望这是可以修复的。我已经在整个网络上查看了这样的错误,但我没有看到任何指向我的错误的东西,特别是。感谢您抽出宝贵时间查看此内容。

FWIW,我还有一个 Python3 virtualenv 安装了 ipython 的 dev 分支,它也可以按预期工作。

0 投票
2 回答
9828 浏览

c++ - ZMQ:socket_send/recv 阻塞

所以我试图在 Python 中的 ZMQ 和 C/C++ 扩展中的 ZMQ 之间建立一些简单的通信。Python 设置上下文,绑定一个 inproc 套接字,并将上下文和套接字名称传递给扩展。扩展设置自己的套接字、连接和侦听消息。然后 Python 发送一个标题,然后将字典的字符串表示形式发送到扩展。使用 REQ/REP 套接字的非常简单的东西。但是,由于某种原因,我似乎找不到,对 socket.send 的调用被阻塞,并且扩展永远不会超过对 zmq_recv 的调用。我有一个测试环境,在那里我播放了几乎完全相同的场景,但套接字不会阻塞,并且我已经对代码进行了三重检查,它应该以相同的方式工作。

PYTHON:

C/C++:

任何帮助弄清楚这里发生了什么都非常感谢。

编辑:另请注意,此代码将在 gevent 对标准库进行了猴子补丁的环境中运行。这是我使用thread.start_new_thread 的部分原因,因为它是在monkeypatching 发生之前保存的,我想要一个真正的线程而不是绿色线程。

0 投票
1 回答
1169 浏览

python - Python:从多个进程写入单个文件(ZMQ)

我想从多个进程写入单个文件。确切地说,我宁愿不使用多处理队列解决方案进行多处理,因为其他开发人员编写了几个子模块。但是,对此类子模块的文件的每次写入都与对zmq队列的写入相关联。有没有办法可以将zmq消息重定向到文件?具体来说,我正在寻找类似http://www.huyng.com/posts/python-logging-from-multiple-processes/的东西,而不使用该logging模块。

0 投票
1 回答
923 浏览

wsgi - gunicorn gevent 流响应和 zeromq 的内存泄漏

我正在向 gevent 工作人员提供来自 gunicorn 的 MJPEG 流响应。一切正常,但是当客户端终止连接时,似乎 zeromq 订阅者没有被 GC 处理,只是继续接受图像数据。

这是 gunicorn 的内存使用情况:

内存泄漏

这是 wsgi 应用程序的源代码:

我正在使用 --max-requests 5 运行 gunicorn 来提供帮助,但显然不是解决方案。我什至不知道从哪里开始追捕罪魁祸首:/

0 投票
0 回答
989 浏览

python - 可以使用 PYZMQ 的 WebRTC LAN p2p 视频聊天吗?

我使用 pyzmq 和 pyqt for UI 为我的本地网络(所有 WINDOWS)构建了一个消息传递/聊天应用程序,它基于majordomo 模式。它是这样设置的:

  • 网络上的每台机器都有一个客户端/工作者
  • 他们通过 pyzmq连接到“服务器” 代理并注册会话
  • 会话“服务器” 代理广播给客户端
  • 'sender '客户端向特定会话发送消息时,broker将消息路由到相应的worker目的地,worker生成回复,然后由 broker 将其路由回'sender'客户端(结束循环,确认传递)

一切正常,短信在“客户端”pyqt UI 中形成,并由“worker”pyqt UI 接收。现在我希望在这个框架的基础上为我的应用程序添加视频聊天......我一直在研究 webRTC 并希望找到一种方法来实现它。

这就是 webRTC 的工作原理根据我收集的信息(这里可能严重错误,请纠正我):

  • 机器 A的 Chrome 浏览器通过 javascript 函数 webkitGetUserMedia 从网络摄像头/麦克风打开本地视频/音频流 然后通过javascript 函数webkitURL为流创建(机器 A) URL
  • 通过信令服务器将(机器 A) URL发送到机器 B的 Chrome 浏览器
  • 机器 B的 Chrome 浏览器接受并加载(机器 A) URL ,通过前面提到的javascript 函数从 webcam.mic 设置它自己的本地视频/音频流,并通过信令服务器将(机器 B) URL回复回机器 A
  • 机器 A的 Chrome 浏览器正在显示(机器 B)视频/音频 | 机器 B的 Chrome 浏览器正在显示(机器 A)视频/音频

是这个过程吗?或者这是对对等点如何相互连接的完全错误的假设?

如果正确,我想调整我当前的 pyzmq 应用程序以充当用于在机器之间创建连接的信号服务器,因为我知道我的机器的 IP 地址,我可以配置我的防火墙以访问我正在尝试的所需端口为了消除此设置的任何额外 STUN/TURN 服务器,我不打算离开我的 LAN 并访问远程机器。我想用 Python 处理所有事情(尽可能多地),包括电池(避免使用 Node.js)。

所以主要问题是我应该如何将 webRTC 集成到我的设置中?webRTC 是否需要在信令服务器或对等机器上构建和运行特定的先决条件库或 API?任何代码示例/建议/链接将不胜感激。

0 投票
2 回答
388 浏览

zeromq - ZeroMQ:如何在同一代码中初始化 SUB 和 PUSH 套接字?即黑盒模式但不使用不同的机器

我有这个代码

但是当我运行它时,它无法从发布者那里收到任何消息,但是当我评论这行时

它突然起作用了。zeromq指南第5章黑盒模式中指出这是可能的。如果是这样,我在这里做错了什么?

0 投票
1 回答
7321 浏览

permission-denied - IPython 权限被拒绝

我在 spyder 中启动 ipython notebook 或 ipython 控制台时遇到问题,导致错误消息“Assertion failed: Permission denied (......\src\err.cpp:247) and (in ipython notebook)内核无休止地重新启动。

我在 Windows 7 上使用 Python 的 Anaconda 安装,并且 ipython 1.1 和 ipython 1.0 都有相同的问题。在我切换到 Anaconda 之前,我在 1.0 之前运行 ipython 版本时没有这个问题。

谷歌搜索发现了这个问题的另一个实例,这表明它是由于与 PyZMQ 和防火墙的交互。我尝试将 python 和 ipython 的特定例外添加到我的防火墙,并完全关闭防火墙,没有任何变化。我可以在命令行中运行 ipython,但笔记本或 spyder 中的控制台都不能工作(给出上面的错误。)

任何有关此的信息都会有所帮助。我在 python 安装中的任何文件夹 \src\ 中找不到任何文件 err.cpp,因此我无法确认触发错误的原因与 PyZMQ 或防火墙有任何关系。关闭防火墙或提升命令提示符时不会进行任何更改。我还能尝试什么?

0 投票
1 回答
844 浏览

python - 难以理解 Majordomo API、pyzmq-mdp 的工作原理

我正在寻找使用 Majordomo API pyzmq-mdp。客户端存储库中的示例是我不太了解的内容。

在 myclient.py 中,该示例在不使用 MDPClient API 的情况下手动创建了一个套接字。更糟糕的是,mdp_request 方法用于发出请求。但到目前为止我试过这个:

我只是在运行客户端。没有经纪人。但这不会引发 RequestTimeout 异常。我有以下疑问:

  • 为什么示例没有实现 MDPClient API?
  • 当有可用的请求方法时, mdp_request 方法的目的是什么?
  • 我的方法有什么问题?

我错过了一些明显的东西吗?请给予一些指导。

0 投票
1 回答
56 浏览

zeromq - 如何在单实例非阻塞 Pyzmq 中运行 REP 和 PUB

我的对象:

然后我运行这两个函数:

第一个功能阻止了第二个。有没有办法从单个类实例运行它们?

0 投票
1 回答
3987 浏览

python - ZeroMQ:发送前必须休眠

我正在使用转发器设备(使用 pyzmq)编写 zeromq 演示

以下是代码(参考https://learning-0mq-with-pyzmq.readthedocs.org/en/latest/pyzmq/devices/forwarder.html):

转发器.py

子.py

发布.py

python forwarder.pypython sub.py终端运行

然后运行python pub.py,订阅者收不到消息。但是,如果我在发送前睡了一点时间(例如 0.01 秒),它就会起作用。

所以我的问题是,为什么我sleep要先发送?谢谢。