![](/img/trans.png)
[英]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.