[英]Python asyncio future add_done_callback then cancel the future
[英]Python - asyncio - Wait for a future inside a callback
這是我的代碼,我希望my_reader
等待最多5秒鍾,以備將來使用,然后對my_future.result()
。 請注意, my_reader
不是 協程 ,它是一個回調 。
import asyncio, socket
sock = ...
async def my_coroutine():
...
def my_reader():
my_future = asyncio.Future()
...
# I want to wait (with a timeout) for my_future
loop = asyncio.get_event_loop()
loop.add_reader(sock, my_reader)
loop.run_forever()
loop.close()
我不想使用:
AbstractEventLoop.create_datagram_endpoint()
AbstractEventLoop.create_connection()
我擁有的套接字是從另一個模塊返回的,我必須讀取給定大小的數據包。 轉移必須在5秒內完成。
如何在回調中等待將來?
抱歉,不可能在回調中等待。 回調應按定義立即執行-否則事件循環將在回調執行期間掛起。
您的邏輯應該建立在協程上,但是低級on_read回調可能會通過設置future的值來通知這些協程。
請參閱aiopg.connection以獲取靈感。 回調名為Connection._ready
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.