What’s new in Tornado 5.1

July 12, 2018

Deprecation notice

  • Tornado 6.0将放弃对Python 2.7和3.4的支持. 支持的最低Python版本为3.5.2.

  • 不推荐使用tornado.stack_context模块,并将在Tornado 6.0中将其删除. 这样做的原因是,在存在async def本机协同程序的情况下提供此模块的语义是不可行的. 由于协程, ExceptionStackContext主要已经过时了. 尽管可以使用新的contextvars包(从Python 3.7开始的Python标准库中),但是StackContext缺少直接替换.

  • 面向回调的代码通常依赖ExceptionStackContext来处理错误并防止连接泄漏. 为了避免无声地引入细微的泄漏的风险(并在协程模式后合并所有Tornado的接口),整个软件包中的callback参数均已弃用,并将在6.0版中删除. 现在,所有删除了callback参数的函数都将返回Future ,而应改用Future .

  • 在任何可能的情况下,使用这些已弃用的接口中的任何一个时,都会发出弃用警告. 但是,默认情况下,Python不显示弃用警告. 要为Tornado 6.0准备应用程序,请使用-Wd参数运行Python或将环境变量PYTHONWARNINGS设置为d . 如果您的应用程序在没有弃用警告的Python 3上运行,那么它应该能够在不中断的情况下迁移至Tornado 6.0.

tornado.auth

tornado.autoreload

  • 现在,如果内部自动重装启动,则将保留命令行自动重装包装.

  • 与内部自动重装结合使用时,命令行包装程序不再在Windows上启动重复的进程.

tornado.concurrent

tornado.gen

  • 不建议使用该模块的某些旧版本,并将在6.0中删除. 这包括engineYieldPointCallbackWaitWaitAllMultiYieldPointTask .

  • @gen.coroutine装饰的函数在6.0中将不再接受callback参数.

tornado.httpclient

  • 在6.0中, raise_error=False的行为正在更改. 当前,它抑制所有错误; 在6.0中,它将仅抑制由于使用非200状态代码完成响应而引发的错误.

  • 不推荐使用AsyncHTTPClient.fetchcallback参数,并将在6.0中删除.

  • tornado.httpclient.HTTPError已重命名为HTTPClientError以避免在代码中也必须处理tornado.web.HTTPError . 旧名称保留为别名.

  • tornado.curl_httpclient现在在用户名和密码参数中支持非ASCII字符.

  • .HTTPResponse.request_time现在在simple_httpclientcurl_httpclient始终保持一致,这两种情况都排除了在max_clients队列中花费的时间(以前,此时间包括在simple_httpclient但在curl_httpclient不包括). 在这两种情况下,现在都可以使用单调时钟来计算时间.

  • HTTPResponse现在具有一个start_time属性,该属性记录了请求开始的挂钟( time.time )时间戳(在离开max_clients队列后,如果适用).

tornado.httputil

  • parse_multipart_form_data现在可以识别RFC 2231/5987( filename*= )格式的非ASCII文件filename*= .

  • HTTPServerRequest.write is deprecated and will be removed in 6.0. Use the methods of request.connection instead.

  • 现在,格式错误的HTTP标头的噪音较小.

tornado.ioloop

  • 现在, PeriodicCallback支持jitter参数以随机更改超时.

  • IOLoop.set_blocking_signal_thresholdIOLoop.set_blocking_log_thresholdIOLoop.log_stackIOLoop.handle_callback_exception已弃用,并将在6.0中删除.

  • 固定一个KeyErrorIOLoop.closeIOLoop被打开,并在多个线程关闭对象.

tornado.iostream

tornado.netutil

  • 改进了与GNU Hurd的兼容性.

tornado.options

tornado.platform.twisted

  • 不推荐使用TornadoReactorTwistedIOLoop ,并将在6.0中将其删除. 取而代之的是,Tornado将始终使用asyncio事件循环,并且还可以将Twisted配置为这样做.

tornado.stack_context

  • The tornado.stack_context module is deprecated and will be removed in 6.0.

tornado.testing

tornado.web

  • 可以从未使用@asynchronous装饰的方法中使用新方法RequestHandler.detach (装饰器必须使用self.request.connection.detach() .

  • 现在, RequestHandler.finishRequestHandler.render返回Futures ,可以用来等待响应的最后一部分发送给客户端.

  • 现在, FallbackHandler调用on_finish以获得可能已覆盖它的子类的好处.

  • asynchronous装饰器已弃用,并将在6.0中删除.

  • RequestHandler.flushcallback参数已弃用,并将在6.0中删除.

tornado.websocket

tornado.wsgi

  • WSGIApplicationWSGIAdapter已弃用,在Tornado 6.0中将被删除.