2011-05-28 46 views
1

我正在用Python编写一个应用程序,它使用thrift在它自己和客户端之间进行通信。无论何时我尝试退出应用程序(使用Ctrl-C或窗口上的退出按钮),节俭服务器都会使应用程序保持活动状态,可能是因为server.serve()函数进入了无限循环。当其他应用程序退出时退出此服务器的最佳方式是什么?如何退出Python中的节俭服务器

+0

您使用哪种类型的节俭服务器?简单?螺纹? – 2011-05-28 03:30:18

+0

我正在使用一个简单的服务器,但我认为它的工作原理是相同的。 – InFreefall 2011-05-28 14:37:58

+0

其实它没有。一个简单的服务器是一个单线程循环,一个线程服务器实际上会启动新线程。当你按Ctrl + C时,只有主线程接收到信号,但python会在退出之前等待所有线程。 – 2011-05-28 19:26:47

回答

1

事实证明我的问题实际上并不是节俭特有的。我在非守护线程中运行一个无限循环;因此,在我的整个程序关闭之前,python等待该线程关闭。在线程的init方法中设置“self.daemon = True”方法很好地解决了这个问题。