zmq_getsockopt 错误 : zmq.error.ZMQError:

我是使用 ZeroMQ 的新手,所以我在处理一些代码。


如果我执行以下代码,则不会显示错误:


import zmq.asyncio

ctx = zmq.asyncio.Context()

rcv_socket = ctx.socket(zmq.PULL)


rcv_socket.connect("ipc:///tmp/test")


rcv_socket.bind("ipc:///tmp/test")

但是,如果我尝试使用该功能zmq_getsockopt(),它会失败:


import zmq.asyncio


ctx = zmq.asyncio.Context()

rcv_socket = ctx.socket(zmq.PULL)


rcv_socket.connect("ipc:///tmp/test")


socket_path = rcv_socket.getsockopt(zmq.LAST_ENDPOINT)


rcv_socket.bind("ipc://%s" % socket_path)

然后我得到:


zmq.error.ZMQError: No such file or directory for ipc path "b'ipc:///tmp/test'".


守候你守候我
浏览 371回答 1
1回答

梵蒂冈之花

“......新使用 ZeroMQ,所以我正在努力处理一些代码。”首先,欢迎来到零之禅的艺术。如果您从未使用过 ZeroMQ,您可能会喜欢先看看“ZeroMQ原则在不到五秒内”,然后再深入了解更多细节好吧,如果您从首先了解游戏规则开始,而不是从崩溃中学习,那么您的情况会好得多(是的,这与“想要传福音的大师”向人群中注入的东西恰恰相反“只是编码”就足够了——它确实不是,因为它确实是一项严肃的业务)这就是为什么:如果您阅读已发布的 API,如果您不了解系统的结构并且不了解其内部和外部行为(框架的游戏规则) ,大多数时候它仍然会让您感到困惑:该ZMQ_LAST_ENDPOINT选项应检索绑定到 TCP 和 IPC 传输的最后一个端点。返回值将是 ZMQ DSN 形式的字符串。请注意,如果 TCP 主机是INADDR_ANY,由 a 指示*,则返回的地址将是0.0.0.0(对于 IPv4)。这说的是重点,但不知道这个概念,它仍然是隐藏的,你看不到它。最好的下一步如果你真的认真低延迟 分布式计算,最好的下一步,在阅读上面的链接之后,停止编码并首先花一些时间阅读和理解美妙的 Pieter HINTJENS 的书“Code Connected, Volume 1”,这确实是进一步阅读的必读文章 -绝对值得你所有的时间和努力。然后,您将看到为什么它永远不会飞:import zmq.asyncio; ctx = zmq.asyncio.Context()rcv_socket        = ctx.socket( zmq.PULL )rcv_socket.connect( "ipc:///tmp/test" )socket_path = rcv_socket.getsockopt( zmq.LAST_ENDPOINT )rcv_socket.bind(    "ipc://%s" % socket_path )而这个可能(但string这里仍然没有处理以 NULL 结尾的字符......这本身就是一个糟糕的软件设计实践和/或自律或两者兼而有之的标志):import zmq.asyncio; ctx = zmq.asyncio.Context()rcv_socket        = ctx.socket( zmq.PULL )    rcv_socket.bind(    "ipc:///tmp/test" )socket_path = rcv_socket.getsockopt( zmq.LAST_ENDPOINT )rcv_socket.connect( "ipc://%s" % socket_path )
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python