这里是我的代码,我想要my_reader
等待最多5秒钟,然后再用my_future.result()
做一些事情。请注意,my_reader
是不是 a 协同程序,它是回调。Python - asyncio - 在回调中等待未来
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秒内完成。
如何在回调中等待未来?
为什么'add_reader'不接受协同程序? –
这是非常低级别的API(如'asyncio.Protocol' BTW)。 协程在更高层次上运行。 –