0
我已經閱讀了龍捲風ioloop
和相關模塊,以瞭解當套接字被接受並且請求被解析和處理時龍捲風會做什麼。龍捲風在處理處理程序時如何處理遠程關閉連接?
我想知道在請求連接關閉後龍捲風是否可以停止請求處理?
我建立一個測試處理機,所述get
方法花費5秒睡眠(time.sleeo(5))。
然後我發送一些龍捲風的請求,所有的請求都設置爲讀取超時3秒,我在龍捲風和幾分鐘後發現了一些close_wait
連接,這些連接正常關閉。
我猜5秒處理程序是減慢龍捲風的事件循環,當龍捲風處理第二個處理程序,其連接已關閉,如果龍捲風知道,它不需要做下一步。
謝謝Ben!我還有兩個問題。 1.我的處理程序被寫爲阻塞,我知道這會阻止ioloop。我在執行處理程序之前檢查了'socket'狀態:在標有'MSG_PEEK'的那個'socket'上調用'recv',如果我得到空字符串我認爲連接已經被遠程關閉了,如果我得到了EAGAIN或EWOULDBLOCK異常我知道連接是活着的,這對我適合嗎? 2.我想記錄每個連接的接受時間,我添加了'accept_handler'的日誌,但是我發現每個日誌輸出都是一個接一個的,我認爲它們應該同時出現。 – dawncold
如果您一次只提供一個連接即可,MSG_PEEK技巧可能會有效,但請記住,有時會檢測到關閉連接需要很長時間*。我不明白你的第二個問題(最好把新問題當作新問題而不是評論)。 –