我尝试在自动测试中使用Pyro4,但现在我对Pyro4的一些能力感到困惑。 是否存在一些通过Pyro4对象获取系统信息的方法。
在我的想法中,我公开了一个可以获取系统信息的pyro对象,远程机器可以使用该对象来显示系统信息。但是在我的代码中,远程计算机始终显示服务器信息。我想我误解或误用了Pyro4
对不起这个愚蠢的问题,我是Pyro4的新手。以下是我的示例代码。 服务器公开pyro对象
# Server.py
#! /usr/bin/env python
import Pyro4
import os
class Ex(object):
def run(self):
print os.uname()
if __name__ == "__main__":
daemon = Pyro4.Daemon()
ns = Pyro4.locateNS()
uri = daemon.register(Ex())
ns.register("ex", uri)
print uri
daemon.requestLoop()
和客户端使用Pyro对象
# Remote
#! /usr/bin/env python
import Pyro4
if __name__ == "__main__":
uri = raw_input("input the uri> ")
fn = Pyro4.Proxy(uri)
fn.run()
P.S 我知道我可以在客户端获取os信息,但是我想使用Pyro对象来获取信息而不是客户端自己这样做。
答案 0 :(得分:1)
我得到了答案!
只需使用Pyro4.utils.flame。该模块可以在远程机器上使用模块或功能。
以下是示例代码:
远程机器
python -Wignore -m Pyro4.utils.flameserver --host <yourIP> --port 9999
主持人
#! /usr/bin/env python
import Pyro4.utils.flame
if __name__ == "__main__":
flame = Pyro4.utils.flame.connect("192.168.16.29:64024")
os = flame.module("os")
print os.listdir('.')