首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么在zeromq中push/pull的实现不能返回所有消息

为什么在zeromq中push/pull的实现不能返回所有消息
EN

Stack Overflow用户
提问于 2013-07-12 06:33:32
回答 1查看 551关注 0票数 1

我在zeromq中有一个客户端服务器对。奇怪的是,pull客户端只接收每隔一次发送的消息。下面是我的实现

代码语言:javascript
运行
复制
## Push Server
import zmq

def post():
    context = zmq.Context()
    socket = context.socket(zmq.PUSH)
    socket.bind("tcp://127.0.0.1:3333")
    socket.send("hello")
    socket.close()

if __name__ == "__main__":
    post()

## Pull client
def read():
    context = zmq.Context()
    content = context.socket(zmq.PULL)
    content.connect("tcp://127.0.0.1:3333")

    while True:
        print content.recv()
        if content.recv() is "0":
            sys.exit()

if __name__ == "__main__":
    read()

为什么read()只收到一半的消息?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-12 07:38:04

每次调用content.recv()时都会收到一条新消息。其中一个用于print语句,另一个用于if子句。改为将消息读取到本地变量中。作为附注,使用'==',而不是'is‘进行比较。

代码语言:javascript
运行
复制
while True:
    msg = content.recv()
    print msg
    if msg == "0":
        sys.exit()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17604686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档