Dim*_*iev 5 python tcp ipc zeromq
我不想让 python 应用程序在 Windows 上运行,但我得到了一个 ZMQError: Protocol not supported 这是因为 Windows 不支持 ipc。从我所读到的,从 ipc 到 tcp 协议的更改应该与更改 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)
Run Code Online (Sandbox Code Playgroud)
如果我将 ipc:// 更改为 tcp:// 我得到 ZMQError: Invalid argument 所以我想这不是那么简单。你能告诉我为 Windows 修复这个问题的过程吗,或者告诉我我是否在问一个愚蠢的问题。
你可以看到完整的脚本https://github.com/sailfish-team/sailfish/blob/master/sailfish/master.py上面的代码来自第 250 行。 SailfishCFD 是一个用于 GPU 的 Python Lattice Boltzmann (LBM) 模拟包(CUDA、OpenCL)
非常感谢!
这意味着,无论在{ 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"
Run Code Online (Sandbox Code Playgroud)
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?
Run Code Online (Sandbox Code Playgroud)
框架问题。您的代码对 IPC 管道使用变量“fileName”-类似命名(寻址)。你开始吧。
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
Run Code Online (Sandbox Code Playgroud)
要确保你不会在Windows命令zmq.bind()接触“具有特权的” / already-使用/防火墙- “封锁” TCP端口#-s。
检查了这些系统设置并使 zmq-call(s) 语法与用于tcp://
传输类的ZeroMQ API 兼容,
IE:
"tcp://<ip_address>:<port#>"
# asString
或者
"tcp://<aDnsResolvableHostNAME>:<port#>"
# asString
你拥有了它。
归档时间: |
|
查看次数: |
3348 次 |
最近记录: |