What’s new in Tornado 5.0

Mar 5, 2018

Highlights

  • 此版本的重点是改善与asyncio集成. 在Python 3上, IOLoop始终是围绕asyncio事件循环的包装,并且使用asyncio.Futureasyncio.Task代替其Tornado对应对象. 这意味着基于asyncio库可以与使用Tornado的库相对无缝地混合. 尽管已尽力将更改的影响降到最低,但可能需要更改代码才能与Tornado 5.0兼容,如以下部分所述.

  • Tornado 5.0支持Python 2.7.9+和3.4+. 不推荐使用Python 2.7和3.4,并且将在Tornado 6.0中删除对它们的支持,而Tornado 6.0将需要Python 3.5+.

Backwards-compatibility notes

Other notes

  • 现在,Python 2.7需要使用futuresconcurrent.futures .futures向后移植)包.

  • 在Python 2.7上不再需要certifibackports.ssl-match-hostname软件包.

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

tornado.auth

tornado.autoreload

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

  • The io_loop argument to tornado.autoreload.start has been removed.

tornado.concurrent

tornado.curl_httpclient

  • 改进了Python 3上的调试日志记录.

  • 现在,除了其他度量外, time_info响应属性还包括appconnect .

  • 现在,关闭CurlAsyncHTTPClient会破坏循环引用,这可能会延迟垃圾回收.

  • CurlAsyncHTTPClient构造函数的io_loop参数已删除.

tornado.gen

  • tornado.gen.TimeoutError现在是一个别名tornado.util.TimeoutError .

  • 现在,此模块创建的Futures泄漏检测将其归因于适当的调用方,而不是协程机制.

  • 几个可能延迟垃圾回收的循环引用已被分解.

  • On Python 3, asyncio.Task is used instead of the Tornado coroutine runner. This improves compatibility with some asyncio libraries and adds support for cancellation.

  • YieldFuturewith_timeoutio_loop参数已删除.

tornado.httpclient

tornado.httpserver

  • It is now possible for a client to reuse a connection after sending a chunked request.

  • 如果客户端发送格式错误的请求,则服务器现在将以400错误进行响应,而不是简单地关闭连接.

  • Content-LengthTransfer-Encoding标头不再与1xx或204响应一起发送(对于304个响应来说已经是正确的).

  • 关闭与HTTP / 1.1客户端的Connection: close ,将发送Connection: close标头和响应.

  • HTTPServer构造函数的io_loop参数已删除.

  • 如果存在多个X-SchemeX-Forwarded-Proto标头,则仅使用最后一个.

tornado.httputil

tornado.ioloop

tornado.iostream

tornado.locks

  • 作为Future更改的副作用,总是相对于Condition.notify异步通知服务员.

tornado.netutil

tornado.options

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

tornado.platform.asyncio

tornado.platform.caresresolver

tornado.platform.twisted

  • TornadoReactorTwistedResolvertornado.platform.twisted.installio_loop参数已删除.

tornado.process

tornado.routing

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

tornado.simple_httpclient

tornado.tcpclient

  • TCPClient构造函数的io_loop参数已删除.

  • TCPClient.connect具有新的timeout参数.

tornado.tcpserver

  • TCPServer构造函数的io_loop参数已删除.

  • 关闭期间, 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现在将所有查询参数从请求复制到重定向位置.

  • 如果在对StaticFileHandler的请求中同时存在If-None-MatchIf-Modified-Since标头,则后者将被忽略.

tornado.websocket