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
現在の stdout をスレッド内のものにバインドする関数を作成しようとしましたmo.reconnect(sys.__stdout__)
が、Pyro4 はバッファを引数として受け入れません。
解決策は、Pyro4 プロキシによって受信される関数の最後に単純にテキストを返すことですが、関数内に情報を表示できるようにしたいと考えています。
質問はstdinにも有効です。
私が探しているものを達成する方法はありますか? 私が得られないものはありますか? おそらく、Pyro4 はそれを行うための最良の方法ではありません。
ありがとうございました