zmq_getsockopt error : zmq.error.ZMQError: No such file or directory for ipc path
zmq_getsockopt error : zmq.error.ZMQError: No such file or directory for ipc path
我是 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'".
"...new to use ZeroMQ, so I am struggling with some code."
首先,欢迎来到零之禅的艺术。
如果你从未使用过 ZeroMQ,
你可能会喜欢先看看
,然后再深入了解更多细节
好吧,如果你首先了解 游戏规则,那么你会过得更好,而不是从崩溃中学习(是的,恰恰相反"wannabe-evangelisation-gurus" 向人群中注入的东西 "just-coding" 就足够了 - 但事实并非如此,因为它确实是一项严肃的业务)
这就是为什么:
如果你阅读已发布的API,如果你没有系统结构图&不了解其内部和外部行为(框架的游戏规则):
The ZMQ_LAST_ENDPOINT
option shall retrieve the last endpoint bound for TCP and IPC transports. The returned value will be a string in the form of a ZMQ DSN. Note that if the TCP host is INADDR_ANY
, indicated by a *
, then the returned address will be 0.0.0.0
(for IPv4).
说到点子上了,不懂概念,点子还是藏不住的。
最好的下一步
如果您确实认真对待 low-latency distributed-computing,最好的下一步是在阅读上面的 link 之后停止编码,先花一些时间阅读和理解精彩的 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 )
而这个可能(但是这里仍然没有处理以 NULL 结尾的字符 string
... 这本身就是一个糟糕的软件设计实践的标志 and/or 自纪律或两者兼而有之):
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 )
我是 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'".
"...new to use ZeroMQ, so I am struggling with some code."
首先,欢迎来到零之禅的艺术。
如果你从未使用过 ZeroMQ,
你可能会喜欢先看看
,然后再深入了解更多细节
好吧,如果你首先了解 游戏规则,那么你会过得更好,而不是从崩溃中学习(是的,恰恰相反"wannabe-evangelisation-gurus" 向人群中注入的东西 "just-coding" 就足够了 - 但事实并非如此,因为它确实是一项严肃的业务)
这就是为什么:
如果你阅读已发布的API,如果你没有系统结构图&不了解其内部和外部行为(框架的游戏规则):
The
ZMQ_LAST_ENDPOINT
option shall retrieve the last endpoint bound for TCP and IPC transports. The returned value will be a string in the form of a ZMQ DSN. Note that if the TCP host isINADDR_ANY
, indicated by a*
, then the returned address will be0.0.0.0
(for IPv4).
说到点子上了,不懂概念,点子还是藏不住的。
最好的下一步
如果您确实认真对待 low-latency distributed-computing,最好的下一步是在阅读上面的 link 之后停止编码,先花一些时间阅读和理解精彩的 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 )
而这个可能(但是这里仍然没有处理以 NULL 结尾的字符 string
... 这本身就是一个糟糕的软件设计实践的标志 and/or 自纪律或两者兼而有之):
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 )