對不起,這個愚蠢的初學者問題,但我有一個真正的問題了解異步I/O的概念,我不談論回調和其他複雜的東西,我只是想了解「如何執行代碼的Python」python中的異步I/O是什麼?
所以在這裏我想與
class Foo()
take a user input # line 1
seek for this input from the database # line 2
make some operation using the database output # line 3
make an output to the client and show the message to the page # line 4
瞭解,所以如果用戶將使用龍捲風例如,如果他在服務器上執行代碼的例子,那麼,假設我們有4客戶請求url匹配類Foo
的頁面,那麼,Python將如何執行代碼;
ie;在Python中,因爲它是一個Script
語言,那麼每一行都在執行並返回值?所以它執行線1爲用戶1,然後停止,服務於線1爲客戶端2等與客戶的其餘部分,然後跳到第2行等?
那麼如果第2行使用同步庫(例如Pymongo),那麼程序必須運行到第4行才能爲第二個客戶端服務? –
是的,確實如此。自數據庫查詢完成後,使用同步庫將阻止所有客戶端的執行,從而有效地掛起整個服務器。使用txmongo代替或例如將pymongo請求委託給RESTfull API,然後您將通過異步HTTP客戶端從Tornado服務器調用該API。編寫異步服務器策略時,應儘快從處理程序返回以處理其他客戶端。 – yakxxx
,因爲我以前認爲只有第2行是阻塞數據庫的問題,所以當它結束時,它會繼續行4等等,所以瓶頸只在第2行 –