gpt4 book ai didi

python - 更改 IPC ://to tcp://python zmq (Windows)

转载 作者:可可西里 更新时间:2023-11-01 02:32:43 24 4
gpt4 key购买 nike

我试图让 python 应用程序在 Windows 上运行,但我收到 ZMQError: Protocol not supported这是因为 Windows 不支持 ipc。根据我的阅读,从 ipc 到 tcp 协议(protocol)的更改应该与更改 bind() 中使用的字符串一样简单。

        master_addr = 'ipc://{0}/sailfish-master-{1}_{2}'.format(
tempfile.gettempdir(), os.getpid(), subdomain.id)
ipc_files.append(master_addr.replace('ipc://', ''))
sock = ctx.socket(zmq.PAIR)
sock.bind(master_addr)
sockets.append(sock)

如果我将 ipc://更改为 tcp://我会得到 ZMQError: Invalid argument 所以我想事情没那么简单。您能否指导我完成为 Windows 修复此问题的过程,或者告诉我我是否在问一个愚蠢的问题。

你可以看到完整的脚本https://github.com/sailfish-team/sailfish/blob/master/sailfish/master.py上面的代码来自第 250 行。SailfishCFD 是用于 GPU(CUDA、OpenCL)的 Python Lattice Boltzmann (LBM) 仿真包

非常感谢!

最佳答案

ZeroMQ 与传输无关

这意味着,无论传输类是什么,都可以传递消息 { inproc:// | ipc:// | tcp:// | pgm:// | epgm:// }正在“幕后”使用。

这并不意味着在任何一种情况下都可以使用相同的(特定于传输的)寻址语法。

master_addr = 'ipc://{0}/sailfish-master-{1}_{2}'.format( tempfile.gettempdir(),
os.getpid(),
subdomain.id
)
sock.bind( master_addr ) # works on Linux/ipc
# .bind( <<<tcp_addr>>> ) # fails on "{0}{1}{2}".format-addressing"

Windows 不允许使用 ipc:运输级。这种需要更改的情况会影响您的源代码的范围更广一些,因为在寻址方面有一些额外的与 ipc 相关的假设。

见于:

addr         = "tcp://{0}".format( self._subdomain_addr_map[nbid] ) # tcp://<ip>:<port>?
addr = "tcp://{0}".format( self._iface ) # ref. #104 missing ":<port>" part!
summary_addr = 'tcp://127.0.0.1:{0}'.format( config._zmq_port ) # port free?

开始于:

构建问题。您的代码对 IPC 管道使用变量“fileName”-like 命名(寻址)。从这里开始。

try:
print "DEBUG: Try to .bind() a ", master_addr
sock.bind( master_addr )
print " ==OK."

except ZMQError as Exc:
print " ! FAILED:"
# log & handle Exc details

except:
print " ! FAILED: a non-ZMQ-related issue"
# log & handle Exc details

端口#-s:

请确保您在 Windows 上执行命令 zmq.bind() 以触摸“特权”/already-used/firewall-“blocked” TCP-port#-s.

已检查这些系统设置并使 zmq-call(s) 语法与 的 ZeroMQ API 兼容 tcp:// 运输类,

即:

"tcp://<ip_address>:<port#>" # asString

"tcp://<aDnsResolvableHostNAME>:<port#>" # asString

你有它。

关于python - 更改 IPC ://to tcp://python zmq (Windows),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26712553/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com