Tornado 2.1的新功能¶
2011年9月20日¶
向后不兼容的更改¶
已取消对Tornado 1.0版之前版本所写安全cookie的支持。这个
RequestHandler.get_secure_cookie方法不再采用include_name参数。这个
debug应用程序设置现在会导致在浏览器中显示未捕获异常的堆栈跟踪。由于这可能会泄漏敏感信息,因此不建议将调试模式用于面向公共的服务器。
安全修补程序¶
Diginotar已从使用的默认CA证书文件中删除
SimpleAsyncHTTPClient.
新模块¶
tornado.gen:一个基于生成器的接口,用于简化异步函数的编写。tornado.netutil部分tornado.httpserver已提取到一个新模块中,用于非HTTP协议。tornado.platform.twisted:Tornado IOLoop和Twisted反应堆之间的桥梁,允许为Twisted编写的代码在Tornado上运行。tornado.process:多进程模式已得到改进,现在可以重新启动崩溃的子进程。在处添加了新的入口点tornado.process.fork_processes虽然,虽然tornado.httpserver.HTTPServer.start仍然支持。
tornado.web¶
tornado.web.RequestHandler.write_error替换get_error_html作为生成自定义错误页的首选方法 (get_error_html仍受支持,但已弃用)在
tornado.web.Application,处理程序可以由(完全限定)名称指定,而不是导入和传递类对象本身。现在可以使用的自定义子类
StaticFileHandler与static_handler_class应用程序设置,并且此子类可以重写static_url方法。StaticFileHandler子类现在可以重写get_cache_time自定义缓存控件行为。tornado.web.RequestHandler.get_secure_cookie现在有一个max_age_days允许应用程序覆盖默认一个月到期的参数。set_cookie现在接受max_age关键字参数以设置max-agecookie属性(注意下划线与短划线)tornado.web.RequestHandler.set_default_headers可以被重写,以在错误处理期间不被重置的方式设置头。RequestHandler.add_header现在可以用于设置响应中可以多次出现的标题。RequestHandler.flush现在可以接受流控制的回调。这个
application/json现在可以对内容类型进行gzip处理。现在可以作为静态函数访问cookie签名函数
tornado.web.create_signed_value和tornado.web.decode_signed_value.
tornado.httpserver¶
为了方便一些高级的多流程方案,
HTTPServer有新方法add_sockets,和插座打开代码单独提供tornado.netutil.bind_sockets.这个
cookies属性现在在上可用tornado.httpserver.HTTPRequest(在旧位置也可作为RequestHandler)tornado.httpserver.HTTPServer.bind现在采用一个backlog参数,其含义与socket.listen.HTTPServer现在可以在UNIX套接字和TCP上运行。修复了启动时出现的异常
socket.AI_ADDRCONFIG在Windows XP上不可用
IOLoop and IOStream¶
IOStream性能得到了提高,特别是对于小的同步请求。新方法
tornado.iostream.IOStream.read_until_close和tornado.iostream.IOStream.read_until_regex.IOStream.read_bytes和IOStream.read_until_close现在采取streaming_callback参数以在接收数据时返回数据,而不是一次返回全部数据。IOLoop.add_timeout现在接受datetime.timedelta对象以及绝对时间戳。PeriodicCallback由于累积误差,现在坚持到指定的时间段,而不是以后爬行。tornado.ioloop.IOLoop和tornado.httpclient.HTTPClient现在有close()应该在创建和销毁许多这些对象的应用程序中使用的方法。IOLoop.install现在可以使用ioloop的自定义子类作为singleton,而不需要猴子修补。IOStream在出现连接错误时,应始终调用close回调而不是connect回调。这个
IOStream当存在对缓冲数据满意的挂起读取回调时,将不再调用Close回调。
tornado.simple_httpclient¶
现在支持客户端SSL证书
client_key和client_cert参数到tornado.httpclient.HTTPRequest现在使用最大缓冲区大小,以允许读取大于100MB的文件
现在可用于不发送内容长度头的HTTP 1.0服务器
这个
allow_nonstandard_methodsHTTP客户端请求上的标志现在允许除POST和PUT容纳尸体。修复了中的文件描述符泄漏和多个回调调用
SimpleAsyncHTTPClient在执行重定向时不再消耗额外的连接资源。
现在可以使用有缺陷的Web服务器,这些服务器用
\n而不是\r\n\r\n.现在集
response.request_time正确地。连接超时现在工作正常。
其他模块¶
tornado.auth.OpenIdMixin当回调URI位于不同的域上时,现在使用正确的领域。tornado.autoreload有一个新的命令行接口,可用于包装任何脚本。这将取代--autoreload参数tornado.testing.main对语法错误的抵抗力更强。tornado.autoreload.watch可用于监视导入模块源以外的文件。tornado.database.Connection有新的变体execute和executemany返回受影响的行数,而不是最后插入的行ID。tornado.locale.load_translations现在接受任何格式正确的区域设置名称,而不仅仅是预定义的LOCALE_NAMES名单。tornado.options.define现在需要一个group分组选项的参数--help输出。模板加载器现在采用
namespace用于向模板命名空间添加项的构造函数参数。tornado.websocket现在支持协议的最新版本(“hybi-10”)(仍然支持旧版本,“hixie-76”;自动检测正确的版本)。tornado.websocket现在在python 3上工作
错误修复¶
Windows支持已得到改进。Windows仍然不是官方支持的平台,但是测试套件现在通过了,并且
tornado.autoreload作品。上载名称包含特殊字符的文件现在可以工作了。
包含特殊字符的cookie值现在被正确地引用和不加引号。
现在支持多行标题。
中现在支持重复的内容长度头(可以由某些代理添加)。
HTTPServer.Unicode字符串现在可以在模板表达式中使用。
模板
{{% module %}}即使应用程序使用名为modules.带有“expect:100 continue”的请求现在可以处理python 3