실행중인 데몬을 stdout으로 다시 연결하십시오
-
12-12-2019 - |
문제
PY3K에서 데몬으로 실행되는 객체가 있습니다. 이를 위해, 나는 thread (기반 샌더 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
.
Currest STDOUT을 스레드의 하나에 바인딩하는 mo.reconnect(sys.__stdout__)
함수를 만들려고했습니다. 그러나 Pyro4는 인수로 버퍼를 허용하지 않습니다.
솔루션은 Pyro4 프록시에 의해 수신 될 수있는 내 함수가 끝날 때 텍스트를 반환하는 것일 수 있지만 기능 내에 정보를 표시 할 수 있기를 원합니다.
질문은 STDIN에도 유효합니다.
내가 찾고있는 것을 달성 할 수있는 방법이 있습니까? 내가 얻지 않는 것이 있고 나는 과민적 인 일이 있습니까? 어쩌면 pyro4는 그것을하는 가장 좋은 방법이 아닙니다.
고맙습니다
해결책
왜 당신의 데몬이 stdin과 stdout과 상호 작용 하시겠습니까? 그것이 데몬이라는 사실은 "사용자"와 상호 작용해서는 안되는 것을 의미합니다 (stdin과 stdout이 의도 된 사람).
모든 것이 입력 및 출력을 stdin 또는 out에 연결하여 달성하려는 항목에 따라 다릅니다.
제휴하지 않습니다 StackOverflow