2014-11-05 16 views
1

所以我想實現一個簡單的通信協議,其中讀取&寫是完全異步的。這意味着客戶端發送一些數據,然後服務器可能會或可能不會回答一個答案。所以我不能只打電話reader.read(),因爲那樣至少會有東西被退回。在此期間,我可能還會發送更多內容。asyncio流檢查讀者是否有數據

那麼有沒有辦法來檢查讀者是否有東西要讀? (請注意,我正在專門討論流版本:我完全知道協議版本具有獨立的讀寫處理程序,並且不會遇到此問題)

回答

1

有沒有辦法要求讀者擁有傳入的數據與否。

我想創建asyncio.Task用於從循環中讀取來自asyncio流讀取器的數據。 如果您需要異步寫入數據,請隨時通過任何具有某些傳出數據的任務調用StreamWriter.write()

我強烈建議不要直接使用協議 - 它們是對流量控制有用的低級抽象,但對於應用程序代碼更適合使用高級別流。

+0

愚蠢的我。我忽略了'reader.read()'是一個協程。 – velis 2014-11-06 07:16:32