如何解决ZeroMQ在套接字上将ZMQError抛出绑定到ipc://协议地址python
我正在尝试在Python中将IPC协议与ZeroMQ结合使用。
import sys
import time
from random import randint
import zmq
def main(url=None):
ctx = zmq.Context.instance()
publisher = ctx.socket(zmq.PUB)
if url:
publisher.bind(url)
else:
publisher.bind('ipc://var/run/fast-service')
# Ensure subscriber connection has time to complete
time.sleep(1)
# Send out all 1,000 topic messages
for topic_nbr in range(1000):
publisher.send_multipart([
b"%03d" % topic_nbr,b"Save Roger",])
if __name__ == '__main__':
main(sys.argv[1] if len(sys.argv) > 1 else None)
它出现以下错误:
Traceback (most recent call last):
File "pathopub.py",line 43,in <module>
main(sys.argv[1] if len(sys.argv) > 1 else None)
File "pathopub.py",line 19,in main
publisher.bind("ipc://var/run/fast-service")
File "zmq/backend/cython/socket.pyx",line 547,in zmq.backend.cython.socket.socket.bind
zmq.error.ZMQError: No such file or directory for ipc path "var/run/fast-service".
我不明白为什么socket.bind()
函数会发生这种情况,因为在documentation中它说:
当使用
zmq_bind()
通过ipc传输将套接字绑定到本地地址时,端点应解释为标识要创建的路径名的任意字符串。
这意味着不必提供已经创建的目录。
解决方法
URL方案为impl<T: AddAssign<i32>> Profiler<T> {
pub fn increase_by_one(x: &mut T) {
*x += 1;
}
}
。您需要添加绝对路径ipc://
。所以,
/var/run/fast-service
通常,URL为publisher.bind('ipc:///var/run/fast-service')
。您需要本地主机,因此该部分为空。文件系统URL相似,ipc://<host>/<path>
引用本地主机上的file:///home/foo/bar.txt
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。