小编Jas*_*ohi的帖子

从Executor等待Future:Future不能用于'await'表达式

我想用的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()
Run Code Online (Sandbox Code Playgroud)

导致错误:

TypeError: object Future can't be used in 'await' expression
Run Code Online (Sandbox Code Playgroud)

是不是Future对象等待?为什么说它们不是?

我怎样才能返回await一个Future对象executor.submit

Python 3.5.0

编辑

使用executor.submit不是我的决定.这在几个库内部使用,比如requests-futures.我正在寻找一种方法来与协同程序中的那些模块互操作.

python future python-3.x async-await python-asyncio

13
推荐指数
1
解决办法
7057
查看次数

标签 统计

async-await ×1

future ×1

python ×1

python-3.x ×1

python-asyncio ×1