我一直试图让zeromq在Fedora 11上使用Python。因为它需要Python 2.7,所以我安装了ActivePython。我使用easy_install安装了pyzmq并安装得很好。当我从这里运行hello world示例时:
http://zguide.zeromq.org/py:hwclient
它阻止:
socket.recv()
我已经读过有些问题,您可以比客户端接收消息更快地发送消息,这可能导致客户端错过"首先"信息。所以,我不确定的是这是否是预期的行为或至少是可能的行为。我原以为一个简单的Hello World示例就可以开箱即用......
我想弄清楚的是代码或我的安装是否会导致问题。
有人遇到过类似的东西吗?
答案 0 :(得分:2)
说实话,我跳过了hello-world位并直接进入了Lazy Pirate模式客户端服务器。那个在客户端重试循环中的Python版本确实有一些错误,但至少它做了一些事情。我添加了一些打印语句,并进行了正确的客户端 - 服务器通信。
之后,我为我的邮件正文使用JSON对象编写了一个memcache类服务器。例如。 {" CMD":" GET"," KEY":" Albert Jones" }
几个月后,我需要一个持久的键值服务器来处理多处理系统,因此我将现有代码转换为SQLITE键值服务器。通过"键值"我的意思是服务器的整个模式是一个表KVSTORE,有两列,KEY和VAL。我现在可以同时访问多达40个客户端进程的服务器,没有任何障碍。
我还尝试使用asynchat编写使用实际memcache协议的服务器,它比使用ZeroMQ复杂得多。
所以我的建议是继续前进。如果hello world示例不起作用,请尝试使用其他示例。
P.S。如果你想要一个在Fedora或任何其他发行版上运行的可移植Python发行版,请查看https://github.com/wavetossed/pybuild目前你必须在Ubuntu系统上构建它,但是生成的tarball包含所有共享库依赖项并在Redhat /上运行RPM样式发行版和SUSE / RPM样式发行版。它有很多构建第三方库的例子,所以在将自己喜欢的模块添加到自己的Python发行版中时应该没什么问题。