tornado v6 似乎已经放弃了 tornado.web.asynchronous 协程。在代码中解决这个问题有啥不同的方法吗?

Posted

技术标签:

【中文标题】tornado v6 似乎已经放弃了 tornado.web.asynchronous 协程。在代码中解决这个问题有啥不同的方法吗?【英文标题】:tornado v6 seems to have dropped tornado.web.asynchronous coroutine. any different way of fixing this in code?tornado v6 似乎已经放弃了 tornado.web.asynchronous 协程。在代码中解决这个问题有什么不同的方法吗? 【发布时间】:2019-04-02 13:21:38 【问题描述】:

将 torando v5.1 迁移到 v6。但异步协程似乎已被移除。对其修复有何建议?

将项目从 2.7 迁移到 3.6,同时将 tornado 框架从 v5.1 迁移到 v6.0.2,这是由于 [Python code for DynamoDB query is working on v3.6 but not working in python 2.7 strackoverflow 线程中建议的错误。

安装 v6 龙卷风后,它因以下错误而中断。

Python3 xxxx.py

Traceback (most recent call last):
  File "XXXX.py", line 200, in <module>
    class MainHandler(tornado.web.RequestHandler):
  File "XXXX.py", line 201, in MainHandler
    @tornado.web.asynchronous
AttributeError: module 'tornado.web' has no attribute 'asynchronous'

遇到同样问题的https://github.com/mher/flower/issues/878 线程。有解决办法吗?或任何其他在代码中呈现事物的方式?

【问题讨论】:

这首先不是问题。您必须使用版本 5 或更新您的代码以使用版本 6。 【参考方案1】:

@asynchronous 处理程序在 5.1 中已弃用,并在 6.0 中删除。您应该使用协程(使用@tornado.gen.coroutineasync def),而不是使用@asynchronous 和回调。

请注意,一些较旧的代码示例曾经在同一方法上同时使用 @asynchronous@coroutine。将@asynchronous 放在协程上不会做任何事情,因此如果您碰巧同时使用这两个装饰器,您可以删除@asynchronous 而无需更改任何其他内容。

【讨论】:

以上是关于tornado v6 似乎已经放弃了 tornado.web.asynchronous 协程。在代码中解决这个问题有啥不同的方法吗?的主要内容,如果未能解决你的问题,请参考以下文章

Python tornado初探

Tornado_02文件上传

Tornado_02文件上传

Sockjs - 在 Python 代码中向 sockjs-tornado 发送消息

gevent和tornado异步

flask框架詳解