目前我的所有功能都用@tornado.gen.coroutine
装饰,然后我会屈服。我想转移到较新的async/await
。
要转移到异步这意味着我需要使用asyncio IOLoop启动Tornado,如文档中所示:
from tornado.platform.asyncio import AsyncIOMainLoop
import asyncio
AsyncIOMainLoop().install()
asyncio.get_event_loop().run_forever()
我更改了一些协同例程以使用async/await
而不是yield
这似乎适用于旧的Tornado IOLoop为什么如果我没有使用asyncio明确启动Tornado引擎?
在我目前的代码中,我有一个地方可以生成协程列表:
responses=yield [wrap(httpClient,url) for url in somelist]
如何通过等待来实现这条线?
答案 0 :(得分:1)
你不需要使用asyncio的事件循环,Tornado可以使用Tornado事件循环运行本机协程(用async def
定义)。
您可以等待协同程序列表,如:
await tornado.gen.multi([wrap(httpClient,url) for url in somelist])
More information about Tornado and native coroutines is in the docs