我有一个对象在 py3k 中作为守护进程运行。为此,我在线程中使用Pyro4模块(基于Sander Marechal的代码daemon.py)。
class MyDaemon(Daemon):
def run(self):
mo = MyObject()
daemon = Pyro4.Daemon(host=HOST, port=PORT)
uri = daemon.register(mo, USER)
logging.debug("MyObject ready. Object uri = {0}".format(uri))
daemon.requestLoop()
并在需要时,我得到对象
mo = Pyro4.Proxy("PYRO:%s@%s:%i" % (USER, HOST, PORT))
mo.myAction(my_args)
现在我希望 MyObject 模块将文本输出到 sdtout。问题是,在线程中运行时,它没有连接到sys.__stdout__
.
class MyObject():
def greeting(self):
print("Hello world") # lost
我试图创建一个mo.reconnect(sys.__stdout__)
函数来将当前标准输出绑定到线程中的标准输出,但 Pyro4 不接受缓冲区作为参数。
一个解决方案可能是在我的函数末尾简单地返回文本,该文本将由 Pyro4 代理接收,但我也希望能够在函数内显示信息。
这个问题也适用于标准输入。
有没有办法实现我正在寻找的东西?有什么我没有得到并且我过于复杂的东西吗?也许 Pyro4 不是最好的方法。
谢谢