pyzmq:ROUTER套接字的“sendto”函数是否有快捷方式?

时间:2017-10-23 20:53:06

标签: python sockets zeromq pyzmq

我有一个ROUTER套接字,它接受请求,做一些工作并发回一个响应:

import zmq

context = zmq.Context()
socket = context.socket(zmq.ROUTER)
socket.bind("tcp://*:1234")
sender, _, content = socket.recv_multipart()
reply = do_some_work(content)                    # Do something with the message
socket.send_multipart((sender, "", reply))

发送响应时,中间的空字符串感觉非常愚蠢,虽然我知道ZeroMQ需要将该标识与内容分开。

我希望高级语言绑定(例如pyzmq)具有一个包装它的函数,并提供一个更清晰,更不容易出错的API。

我可以想象:

socket.sendto(identity, content)

它会为我添加空框架。

所以 - 有类似内容吗?

1 个答案:

答案 0 :(得分:1)

嗯,AFAIK,不,没有。

原因 1
恕我直言,身份/安全/ ......概念在我看来是一种事后附加组件,可以轻松地将这些附加组件的多帧组合概念重新用于已经成熟的API +无数这些API语言绑定的数量,其中一些可能,其中一些可能没有任何类似的语法自由度,例如类似地美化调用原始ZeroMQ核心公开的API服务的方式。人们应该以某种方式尊重ZeroMQ长期成功运行的发展,他们在组织方面产生共识并遵守RFC规范并管理端到端的开发过程,这些过程多年来源于API v 2.1。最近几天,由于最新的核心API v 4.2.2在生产中稳定运行,许多设计和技术都在最近几天中得到了应用。

原因 2
OOD / OOP福音传道者会让你很快修改自己的观点,希望其他人能够为你做这件事,一旦你想象中有一个 socket.sendto( identity, content ) 自定义的高级别观点特定的方法论证是基于你自己的舒适观点(参见上文) - 因为使用适当的工具非常明显 - 子类化 - 并且添加你自己的,专门的方法,它扩展了通用的超类行为,并增加了你希望得到的安慰,这一切都在你的控制之下。

无论如何,享受ZeroMQ的强大功能,因为它可以帮助您设计高级可扩展的分布式异构非阻塞信令/消息系统。 G / L狂野而富有创意的骑行!