What’s new in Tornado 4.5

Apr 16, 2017

Backwards-compatibility warning

  • 现在, tornado.websocket模块对传入消息的大小施加了限制,默认为10MiB.

New module

General changes

  • 减少循环引用的数量,减少内存使用量并提高性能.

tornado.auth

  • tornado.auth模块已更新,以与Facebook的access_token端点的更改兼容. 这既包括Tornado 4.4.3中最初发布的更改,又包括支持新格式的`session_expires字段的其他更改. session_expires字段当前是一个字符串; 应该以int(user['session_expires'])形式访问它,因为在Tornado 5.0中它将从字符串更改为int.

tornado.autoreload

  • 自动重载现在与asyncio事件循环兼容.

  • 自动重新加载不再尝试在重新启动之前关闭IOLoop和所有已注册的文件描述符; 它依赖于设置的CLOEXEC标志.

tornado.concurrent

  • 禁止一些可能在关闭时记录的"'NoneType'对象不回调"消息.

tornado.gen

  • yield None现在等效yield gen.moment . moment已过时. 这改善了与asyncio兼容性.

  • 修复了生成器对象可能过早地被垃圾回收的问题(最常见的情况是在使用弱引用时).

  • 新函数is_coroutine_function标识由coroutineengine包装的函数.

tornado.http1connection

  • 现在, Transfer-Encoding标头不区分大小写地进行解析.

tornado.httpclient

  • 现在, SimpleAsyncHTTPClient遵循308重定向.

  • CurlAsyncHTTPClient将不再接受httphttps以外的协议. 要覆盖此设置, pycurl.REDIR_PROTOCOLSprepare_curl_callback设置pycurl.PROTOCOLSpycurl.REDIR_PROTOCOLS .

  • CurlAsyncHTTPClient现在通过新的proxy_auth_mode参数支持代理的摘要身份验证(除了基本身份验证).

  • 现在,最低支持的libcurl版本是7.22.0 .

tornado.httpserver

  • HTTPServer现在接受关键字参数trusted_downstream ,该参数控制X-Forwarded-For标头的解析. 该标题可以是受信任代理的列表或IP地址集,将在X-Forwarded-For列表中被跳过.

  • no_keep_alive参数再次起作用.

tornado.httputil

  • url_concat正确处理片段和现有查询参数.

tornado.ioloop

  • 修复了在回调返回空列表或字典后100%的CPU使用率的问题.

  • IOLoop.add_callback现在使用无锁实现,因此可以安全地从__del__方法中使用. 这样可以提高从IOLoop线程对add_callback的调用的性能,并稍微降低其他线程的调用的性能.

tornado.iostream

  • 现在允许将memoryview对象用作write参数.

  • 通过使用内部存储器缓冲区IOStream现在用bytearray ,而不是一个列表的bytes ,从而提高性能.

  • 如果在前一个调用完成之前发生了第二次write调用,则不再孤立通过write返回的期货.

tornado.log

tornado.netutil

  • 解决了在Solaris上导致" LookupError:未知编码:latin1"错误的问题.

tornado.process

tornado.tcpclient

  • TCPClient现在支持source_ipsource_port参数.

  • 改进了对IPv6支持不完整的环境的错误处理.

tornado.tcpserver

tornado.web

tornado.websocket

  • WebSocketHandler.on_message实现现在可能是协程. 在先前的on_message协程完成之前,不会处理on_message .

  • 现在可以使用websocket_ping_intervalwebsocket_ping_timeout应用程序设置来启用对websocket连接的定期ping操作,从而允许检测到断开的连接并关闭它们.

  • 新的websocket_max_message_size设置默认为10MiB. 如果收到大于此值的消息,则连接将关闭.

  • 现在,将由RequestHandler.prepareRequestHandler.set_default_headers设置的标头作为websocket握手的一部分发送.

  • WebSocketHandler.get_compression_options返回值现在可以包含用于设置gzip参数的键compression_levelmem_level . 现在默认压缩级别是6,而不是9.

Demos

  • A new file upload demo is available in the file_upload directory.

  • tcpecho目录中提供了一个新的TCPClientTCPServer演示.

  • Minor updates have been made to several existing demos, including updates to more recent versions of jquery.

Credits

以下人员对此版本做出了贡献:

  • 杰西·杰鲁·戴维斯

  • 亚伦受害者

  • 山崎明弘

  • Alexander

  • 安德烈亚斯·罗斯达尔(AndreasRøsdal)

  • 安德鲁·拉伯特(Andrew Rabert)

  • 安德鲁·苏敏

  • 安托万·彼得里(Antoine Pietri)

  • 安托万·皮特鲁(Antoine Pitrou)

  • 阿图尔·斯塔维阿尔斯基(Artur Stawiarski)

  • 本·达内尔

  • 布莱恩·梅戈

  • Dario

  • 道格·巴尔加斯(Doug Vargas)

  • 尤金·杜博沃

  • 艾佛·乔达(Iver Jordal)

  • JZQT

  • James Maier

  • 杰夫·亨特

  • Leynos

  • 马克·亨德森

  • 迈克尔·V·德帕拉蒂斯

  • 我的RK

  • Mircea乌林尼克

  • Ping

  • 杨平

  • 里卡多·马格里奥切蒂(Riccardo Magliocchetti)

  • 塞缪尔·陈(Samuel Chen)

  • 塞缪尔·狄翁-吉拉多

  • 斯科特·梅斯堡(Scott Meisburger)

  • 丁磊

  • TaoBeier

  • 托马斯·克鲁维

  • 瓦迪姆·塞梅诺夫(Vadim Semenov)

  • matee

  • mike820324

  • stiletto

  • zhimin

  • 依云