gpt4 book ai didi

Python Twisted 与 callInThread

转载 作者:太空宇宙 更新时间:2023-11-03 15:27:54 25 4
gpt4 key购买 nike

我剥离了我的应用程序,但这应该给你一个我在做什么的例子

def run_app(f):
p = Popen(['/usr/bin/app'],stdout=PIPE)
while True:
o = p.stdout.readline()
if o == '' and p.poll() != None: break

reactor.callFromThread(f, o)

class Echo(Protocol):
def connectionMade(self):

reactor.callInThread(run_app, self.appDataReceived)

def dataReceived(self, data):
data = data.strip()
if data == "getmore":
print "getmore"

def appDataReceived(self, u):
print u

def main():
factory = Factory()
factory.protocol = Echo
reactor.listenTCP(3646, factory)
reactor.run()

if __name__ == "__main__":
main()

我有一个应用程序,我想连接它并运行一个不断将数据输出到标准输出的应用程序。现在我的应用程序可以工作,但问题是当客户端退出套接字连接时/usr/bin/app 仍然继续运行。套接字连接越多,此应用程序仍在运行的越多。

Echo Procool 是否有任何方法可以终止 run_app() 函数?

最佳答案

不要使用线程和 Popen。使用 Twisted's process support .此外,您的 Echo 协议(protocol) needs framing或者不能保证它会收到 "getmore" 字符串。

关于Python Twisted 与 callInThread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4081578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com