1
所以我想實現一個簡單的通信協議,其中讀取&寫是完全異步的。這意味着客戶端發送一些數據,然後服務器可能會或可能不會回答一個答案。所以我不能只打電話reader.read()
,因爲那樣至少會有東西被退回。在此期間,我可能還會發送更多內容。asyncio流檢查讀者是否有數據
那麼有沒有辦法來檢查讀者是否有東西要讀? (請注意,我正在專門討論流版本:我完全知道協議版本具有獨立的讀寫處理程序,並且不會遇到此問題)
所以我想實現一個簡單的通信協議,其中讀取&寫是完全異步的。這意味着客戶端發送一些數據,然後服務器可能會或可能不會回答一個答案。所以我不能只打電話reader.read()
,因爲那樣至少會有東西被退回。在此期間,我可能還會發送更多內容。asyncio流檢查讀者是否有數據
那麼有沒有辦法來檢查讀者是否有東西要讀? (請注意,我正在專門討論流版本:我完全知道協議版本具有獨立的讀寫處理程序,並且不會遇到此問題)
有沒有辦法要求讀者擁有傳入的數據與否。
我想創建asyncio.Task
用於從循環中讀取來自asyncio流讀取器的數據。 如果您需要異步寫入數據,請隨時通過任何具有某些傳出數據的任務調用StreamWriter.write()
。
我強烈建議不要直接使用協議 - 它們是對流量控制有用的低級抽象,但對於應用程序代碼更適合使用高級別流。
愚蠢的我。我忽略了'reader.read()'是一個協程。 – velis 2014-11-06 07:16:32