【发布时间】:2016-03-26 09:55:59
【问题描述】:
我想使用python coroutine 中的ThreadPoolExecutor,将一些阻塞网络调用委托给单独的线程。但是,运行以下代码:
from concurrent.futures import ThreadPoolExecutor
import asyncio
def work():
# do some blocking io
pass
async def main():
executor = ThreadPoolExecutor()
await executor.submit(work)
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
loop.close()
导致错误:
TypeError: object Future can't be used in 'await' expression
Future 不是对象等待吗?为什么说不是?
我怎样才能await Future 由executor.submit 返回的对象?
Python 3.5.0
编辑
使用executor.submit 不是我的决定。这由多个库内部使用,例如requests-futures。我正在寻找一种方法来与协程中的这些模块进行互操作。
【问题讨论】:
标签: python python-3.x async-await future python-asyncio