Tornado 5.0的新功能

2018年3月5日

集锦

  • 此版本的重点是改进与 asyncio . 在python 3上, IOLoop 总是包装在 asyncio 事件循环,以及 asyncio.Futureasyncio.Task 被用来代替龙卷风。这意味着基于 asyncio 可以相对无缝地与使用龙卷风的混合。尽管已采取措施将此更改的中断降至最低,但为了与Tornado 5.0兼容,可能需要对代码进行更改,详情见下一节。

  • Tornado 5.0支持python 2.7.9+和3.4+。python 2.7和3.4被弃用,对它们的支持将在tornado 6.0中删除,这将需要python 3.5+。

向后兼容性说明

其他注记

  • The futures (concurrent.futures backport) package is now required on Python 2.7.

  • 这个 certifibackports.ssl-match-hostname 在python 2.7上不再需要包。

  • 建议使用python 3.6或更高版本,因为它具有更高效的垃圾收集功能 asyncio.Future 物体。

tornado.auth

tornado.autoreload

  • 在python 3上,使用 __main__.__spec 为了更可靠地重建原始命令行并避免修改 PYTHONPATH .

  • 这个 io_loop 参数 tornado.autoreload.start 已删除。

tornado.concurrent

tornado.curl_httpclient

  • 改进了Python3上的调试日志记录。

  • 这个 time_info 响应属性现在包括 appconnect 除了其他测量。

  • 关闭一个 CurlAsyncHTTPClient 现在中断可能延迟垃圾收集的循环引用。

  • 这个 io_loop 论据 CurlAsyncHTTPClient 已删除构造函数。

tornado.gen

  • tornado.gen.TimeoutError 现在是的别名 tornado.util.TimeoutError .

  • 泄漏检测 Futures 由这个模块创建的现在将它们属性为正确的调用者,而不是协程机制。

  • 几个可能延迟垃圾收集的循环引用已被破坏。

  • 在Python 3上, asyncio.Task 是用来代替龙卷风连体衣。这提高了与某些 asyncio 库和添加对取消的支持。

  • 这个 io_loop 论据 YieldFuturewith_timeout 已被删除。

tornado.httpclient

  • 这个 io_loop 对所有人的论证 AsyncHTTPClient 已删除构造函数。

tornado.httpserver

  • 现在客户端可以在发送分块请求后重用连接。

  • 如果客户机发送了一个格式错误的请求,服务器现在会以400错误响应,而不是简单地关闭连接。

  • Content-LengthTransfer-Encoding 不再发送带有1xx或204个响应的头(这在304个响应中是正确的)。

  • 当关闭到HTTP/1.1客户端的连接时, Connection: close 消息头与响应一起发送。

  • 这个 io_loop 论据 HTTPServer 已删除构造函数。

  • 如果不止一个 X-SchemeX-Forwarded-Proto 头存在,只使用最后一个。

tornado.httputil

tornado.ioloop

tornado.iostream

tornado.locks

tornado.netutil

tornado.options

  • 现在可以正确检测重复的选项名,不管它们是使用连字符还是下划线。

tornado.platform.asyncio

tornado.platform.caresresolver

tornado.platform.twisted

  • 这个 io_loop 论据 TornadoReactorTwistedResolvertornado.platform.twisted.install 已被删除。

tornado.process

tornado.routing

  • 如果找不到请求的委托,则会生成默认404响应。

tornado.simple_httpclient

tornado.tcpclient

tornado.tcpserver

  • 这个 io_loop 论据 TCPServer 已删除构造函数。

  • TCPServer 不再日志 EBADF 关机时出错。

tornado.testing

  • 被蔑视的 tornado.testing.get_unused_porttornado.testing.LogTrapTestCase 已被删除。

  • AsyncHTTPTestCase.fetch 现在支持绝对URL。

  • AsyncHTTPTestCase.fetch 现在连接到 127.0.0.1 而不是 localhost 对错误的ipv6配置更强大。

tornado.util

tornado.web

  • RequestHandler.set_status 不再要求给定的状态代码出现在 http.client.responses .

  • 不再允许发送带有1xx或204响应的正文。

  • 异常处理现在会中断可能延迟垃圾收集的引用循环。

  • RedirectHandler 现在,将请求中的所有查询参数复制到重定向位置。

  • 如果两者 If-None-MatchIf-Modified-Since 请求中存在邮件头 StaticFileHandler ,后者现在被忽略。

tornado.websocket