@asyncio.coroutine
def listener():
while True:
message = yield from websocket.recieve_message()
if message:
yield from handle(message)
loop = asyncio.get_event_loop()
loop.run_until_complete(listener())
假設我使用帶有asyncio的websockets。這意味着我收到來自websockets
的消息。當我收到一條消息時,我想處理這條消息,但是我用我的代碼丟失了所有的異步事物。因爲yield from handle(message)
正在定義阻塞...我怎麼能找到一種方法使其非阻塞?就像,在同一時間處理多個消息。在我可以處理另一條消息之前,不必等待消息被處理。Asyncio和無限循環
謝謝。
通常你需要每個websocket讀取任務,寫入websocket可能會與其他任務異步執行。 「手柄」也可能是單獨的任務。 你的代碼不完整,所以你很難得到你需要的東西。 –
如果這是你調用的唯一協程,那麼監聽器會阻塞,因爲它會無限運行(因爲while循環)。如果你有另一個同時運行的協同程序(從語句中產生它自己的收益),那麼asyncio將在語句收益之間來回反彈,因此它將不再是「阻塞」的。 – shongololo