Python Zeromq "Hello World"在recv()上阻塞

标签 python zeromq

我一直在尝试让 Zeromq 在 Fedora 11 上使用 Python。由于它需要 Python 2.7,所以我安装了 ActivePython。我使用 easy_install 安装了 pyzmq 并且安装得很好。当我从这里运行 hello world 示例时:

http://zguide.zeromq.org/py:hwclient

它会阻塞:

socket.recv()

我读到,存在这样的问题:您发送消息的速度比客户端接收消息的速度快,这可能会导致客户端错过“第一条”消息。所以,我不确定这是否是预期的行为或至少是可能的行为。我本以为一个简单的 Hello World 示例就可以开箱即用......

我试图弄清楚是否是代码或我的安装导致了问题。

有人遇到过类似的事情吗?

最佳答案

说实话,我跳过了 hello-world 部分,直接进入了 Lazy Pirate 模式客户端-服务器。该版本在客户端重试循环中的 Python 版本中确实存在一些错误,但至少它做了一些事情。我添加了一些打印语句并进行了正确的客户端-服务器通信。

之后,我使用 JSON 对象为消息正文编写了一种 memcache 类型的服务器。例如。 {“CMD”:“GET”,“KEY”:“阿尔伯特·琼斯”}

几个月后,我需要一个用于多处理系统的持久键值服​​务器,因此我将现有代码转换为 SQLITE 键值服务器。我所说的“键值”是指服务器的整个架构是一个包含两列 KEY 和 VAL 的表 KVSTORE。现在,该服务器一次可以被多达 40 个客户端进程访问,没有出现任何问题。

我还尝试过使用 asynchat 编写一个使用实际 memcache 协议(protocol)的服务器,它比使用 ZeroMQ 复杂得多。

所以我的建议是继续前进。如果 hello world 示例不起作用,请尝试其他示例。

附注如果您想要一个在 Fedora 或任何其他发行版上运行的可移植 Python 发行版,请查看 https://github.com/wavetossed/pybuild目前,您必须在 Ubuntu 系统上构建它,但生成的 tarball 包含所有共享库依赖项,并在 Redhat/RPM 风格发行版和 SUSE/RPM 风格发行版上运行。它有大量构建第 3 方库的示例,因此您在将喜爱的模块添加到您自己的 Python 发行版中时应该不会遇到任何问题。

关于Python Zeromq "Hello World"在recv()上阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8074112/

相关文章:

php - 为什么 websockets 在一段时间后停止广播? (实现使用 ReactPHP、Ratchet 和 ZeroMQ)

python - 如何从 span 标签中提取值

python - 如何在 Python 的 Windows 机器上将 CRLF 转换为 LF

python - homebrew python@2 和 python 提供了损坏的 sqlite3

python - 列表中最大的 n 个元素的项目和索引

python - ZeroMQ如何在pyzmq中获取绑定(bind)地址

javascript - 使用 Ratchet 网络套接字时如何定义路由?

c# - ZeroMQ C# 客户端不接收来自 C++ 服务器的消息

python - 使用 PyGAD 进行遗传算法

networking - ZeroMQ 中的 DEALER 和 ROUTER 套接字原型(prototype)有什么区别?