[英]Using Cmd module inside a Python Twisted thread
参考这个问题 ,我需要运行一个Cmd控制台应用程序,该应用程序将使用Python的Twisted框架进行网络查询,具体示例如下:
from cmd import Cmd
from twisted.internet import reactor
class CommandProcessor(Cmd):
def do_quit(self, line):
print 'bye bye !'
return True
def do_hello(self, line):
print 'world'
if __name__ == "__main__":
reactor.callInThread(CommandProcessor().cmdloop)
reactor.run()
一切都很好,但是当执行quit命令时,控制台挂起直到我按下Ctrl + c,如果我在执行退出之前按Ctrl + c,控制台也会挂起,直到我执行quit命令。
当我从CommandProcessor()。cmdloop退出时,似乎反应堆仍在工作,如果这是问题,我需要一种方法在我的线程结束时停止反应堆。
调用reactor.stop
来终止twisted事件循环。 CommandProcess.do_quit
在一个独立的线程中运行; reactor.stop
应使用被称为reactor.callFromThread
在do_quit
方法中添加do_quit
reactor.callFromThread(reactor.stop)
do_quit
reactor.callFromThread(reactor.stop)
。
def do_quit(self, line):
print 'bye bye !'
reactor.stop() # <------
return True
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.