龙卷风asyncio问题

时间:2016-11-07 05:39:31

标签: tornado

目前我的所有功能都用@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]

如何通过等待来实现这条线?

1 个答案:

答案 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