我想爲使用SocketServer模塊的服務器的請求處理程序中的單個連接添加超時。SocketServer ThreadingTCPServer&Asyncore Dispatcher
讓我先說這是我第一次嘗試使用Python進行網絡編程。我已經對SocketServer.BaseRequestHandler和SocketServer.ThreadingTCPServer分別進行了分類,並且設法使用一些基本的線程化TCP功能創建兩個類。
但是,我想我的傳入連接超時。嘗試覆蓋任何內置的SocketServer超時值和方法不起作用,因爲文檔說這隻適用於分叉服務器。我設法創建了一個在X秒後觸發的計時器線程,但由於處理程序線程中的阻塞recv調用的性質,這是沒有用的,因爲我將被迫殺死它,這是我真正的東西想避免。
因此,我的理解是,我需要一個asyncore實現,在那裏獲得通知並讀取一定數量的數據。如果在5秒內沒有發送任何數據,可以說,我想關閉該連接(我知道如何幹淨地做到這一點)。 我發現了一些使用socket的asyncore的例子,但是沒有一個使用SocketServer。那麼,我怎樣才能實現asyncore & threadingTCPserver? 這可能嗎? 有沒有人做過?
*您可*這樣做事,但我建議探索一種更簡單,更有效的方法 - http://twistedmatrix.com/ - 歡迎到Python網絡世界編程! :) –
讓 - 保羅卡爾德龍感謝您的鏈接。我以前見過。在正常情況下,我會選擇twistedmatrix,但這是一個非常注重安全性並且不需要開源或第三方庫的客戶的項目。 –
這非常可悲,邏輯無效(Python是開源和第三方)。不過,祝你的項目好運。 –