在zeromq/python中使用pyobj子函数时设置主题

PHG*_*mer 2 python zeromq

我一直在看zeromq,我注意到有socket.send_pyobj()和socket.recv_pyobj()函数.

我的问题是如果他们打电话给PUB/SUB,他们将如何设置主题.在我已经看过的示例中,使用常规发送它总是两个字符串,其间有空格,第一个字符串将被视为主题.

topic = 'test'
msg = 'hello'
socket.send("%s %s" % (topic,msg))
Run Code Online (Sandbox Code Playgroud)

有办法吗?或者我应该使用不同的端口来制作不同的主题?

PHG*_*mer 5

NVM.想出怎么做.我应该使用send_multipart,如果我想将主题和消息视为一个,并过滤该对象.

对于出版商.

   self.socket.send_multipart([b'status',pickle.dumps(msg2)])
Run Code Online (Sandbox Code Playgroud)

对于reciver.

    socket.setsockopt(zmq.SUBSCRIBE, 'status')
    [topic,msg] = socket.recv_multipart()
    msg2 = pickle.loads(msg)
    print msg2['game']
Run Code Online (Sandbox Code Playgroud)

我不知道为什么,但如果你使用他们的例子.http://zguide.zeromq.org/py:psenvsub它显示我应该在socketopt上做b'status'但它没有过滤,如果我做了那个wya.