2011-05-28 50 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」方法很好地解決了這個問題。