Tornado 3.1的新功能¶
2013年6月15日¶
多个模块¶
在整个包中,许多引用循环都被分解了,从而可以在cpython上更有效地收集垃圾。
当连接打开并立即关闭(即端口扫描)或与关闭的连接相关的其他情况时,会使一些日志消息静音。
各种小提速:
HTTPHeaders案例规范化,UIModule代理对象,预编译一些regex。
tornado.auth¶
OAuthMixin总是发送oauth_version=1.0按照规范要求。FacebookGraphMixin现在使用self._FACEBOOK_BASE_URL在里面facebook_request允许重写基URL。这个
authenticate_redirect和authorize_redirect方法在tornado.auth混合类现在都返回期货。这些方法在OAuthMixin和派生类,尽管它们不接受回调。这个Future如果从用修饰的函数调用这些方法,则必须返回这些方法。gen.coroutine(但不是)gen.engine)TwitterMixin现在使用/account/verify_credentials以获取有关已登录用户的信息,这对于更改屏幕名称更为有效。这个
demos目录(在源分发中)有一个新的twitter演示使用TwitterMixin.
tornado.escape¶
url_escape和url_unescape有一个新的plus参数(默认为true以保持与以前行为的一致性),用于指定它们的工作方式urllib.parse.unquote或urllib.parse.unquote_plus.
tornado.gen¶
修复了长链
tornado.gen协同程序。
tornado.httpclient¶
tornado.httpclient.HTTPRequest接受新的论点auth_mode,可以是basic或digest. 摘要式身份验证仅支持tornado.curl_httpclient.tornado.curl_httpclient当pycurl返回负超时时,不再进入无限循环。curl_httpclient现在支持PATCH和OPTIONS不使用的方法allow_nonstandard_methods=True.在libcurl中处理一类会导致错误的bug
IOLoop.update_handler在各种场景中,包括摘要式身份验证和SOCKS代理。这个
TCP_NODELAY现在在适当的时候设置标志simple_httpclient.simple_httpclient不再记录异常,因为这些异常作为HTTPResponse.error.
tornado.httpserver¶
tornado.httpserver.HTTPServer更优雅地处理格式错误的HTTP头。HTTPServer现在支持IP列表X-Forwarded-For(选择最后一个,即最近的一个)。当HTTP请求因超过最大上载大小而失败时,cpython会立即回收内存。
这个
TCP_NODELAY现在在适当的时候设置标志HTTPServer.这个
HTTPServerno_keep_alive选项现在受到明确传递的HTTP 1.0连接的尊重Connection: keep-alive.这个
Connection: keep-alive检查HTTP 1.0连接现在不区分大小写。这个
str和repr属于tornado.httpserver.HTTPRequest不再包含请求主体,减少日志垃圾邮件错误(以及潜在的私人数据暴露/保留)。
tornado.httputil¶
中使用的缓存
HTTPHeaders没有束缚就不会再成长。
tornado.ioloop¶
一些
IOLoop实施(例如pyzmq)接受整数文件描述符以外的对象;这些对象现在将具有.close()当IOLoop` is closed with `` all_fds=True.留下的短柄
IOLoop.remove_timeout现在将被清理,而不是等待到期。
tornado.iostream¶
修正了一个错误
BaseIOStream.read_until_close这有时会导致数据被传递到最终回调,而不是流式回调。这个
IOStreamclose callback is now run more reliably if there is an exception in_ try_inline_read.新方法
BaseIOStream.set_nodelay可用于设置TCP_NODELAY旗帜。修正了一个错误
SSLIOStream.connect(和SimpleAsyncHTTPClient)未正确报告。
tornado.locale¶
Locale.format_date现在在python 3上工作。
tornado.netutil¶
默认值
Resolver实现现在可以在Solaris上工作。修复了潜在的CPU DoS
tornado.netutil.ssl_match_hostname用于具有滥用通配符模式的证书。的所有实例
ThreadedResolver现在共享一个线程池,其大小由要创建的第一个线程池(或静态线程池)设置Resolver.configure方法)。ExecutorResolver现在记录下来供公众使用。bind_sockets现在可以在不完全支持IPv6的配置中工作。
tornado.options¶
tornado.options.define具有multiple=True现在在python 3上工作。tornado.options.options等OptionParser实例支持一些新的类似dict的方法:items(),在键上迭代,以及(只读)使用方括号语法访问选项。OptionParser.group_dict返回具有给定组名的所有选项,以及OptionParser.as_dict返回所有选项。
tornado.process¶
tornado.process.Subprocess不再将文件描述符泄漏到子进程中,这修复了子进程无法检测到父进程已关闭其stdin管道的问题。Subprocess.set_exit_callback现在适用于在没有显式io_loop参数。
tornado.stack_context¶
tornado.stack_context已经重写,现在快得多。新功能
run_with_stack_context方便使用带有协程的堆栈上下文。
tornado.tcpserver¶
建筑工人
TCPServer和HTTPServer现在采取max_buffer_size关键字参数。
tornado.template¶
模板系统使用的一些内部名称已更改;现在模板中的所有“保留”名称都以开头
_tt_.
tornado.testing¶
tornado.testing.AsyncTestCase.wait当它被修改为tornado.stack_context.tornado.testing.gen_test现在可以称为@gen_test(timeout=60)使一些测试的超时时间比其他测试长。环境变量
ASYNC_TEST_TIMEOUT现在可以设置为覆盖默认超时AsyncTestCase.wait和gen_test.bind_unused_port现在通过None而不是0作为港口getaddrinfo,这在一些不寻常的网络配置中工作得更好。
tornado.util¶
tornado.util.import_object现在使用不包含点的顶级模块名称。tornado.util.import_object现在不断加薪ImportError而不是AttributeError当它失败时。
tornado.web¶
这个
handlers传递给的列表tornado.web.Application构造函数和add_handlers除了元组和URLSpec物体。tornado.web.StaticFileHandler当客户端通过If-Modified-Since1970年以前的时间戳。新方法
RequestHandler.log_exceptioncan be overridden to customize the logging behavior when an exception is uncaught. Most apps that currently override ``_ handle请求异常``现在可以使用RequestHandler.log_exception和write_error.RequestHandler.get_argument现在提出MissingArgumentError(子类)tornado.web.HTTPError如果找不到参数,则返回。Application.reverse_url现在使用url_escape具有plus=False,即空格编码为%20而不是+.从URL路径提取的参数现在用解码
url_unescape具有plus=False,所以加号保留原样,而不是转换为空格。RequestHandler.send_error现在每个请求只调用一次,即使堆栈上下文捕获多个异常。这个
tornado.web.asynchronous对于返回Future(即使用gen.coroutine或return_future装饰工)RequestHandler.prepare如果它返回Future. 这个tornado.web.asynchronousdecorator不用于prepare其中之一Future-应该使用相关的装饰。RequestHandler.current_user现在可以正常分配给。RequestHandler.redirect不再悄悄地删除控制字符和空白。现在传递控制字符、换行符或制表符是一个错误。StaticFileHandler已经在内部重新组织,现在有了可以在子类中被重写的附加扩展点。StaticFileHandler现在支持HTTPRange请求。StaticFileHandler仍然不适合文件太大而无法轻松放入内存,但是Range在某些浏览器中,需要支持才能搜索HTML5音频和视频。StaticFileHandler现在默认情况下使用较长的哈希,并对Etag就像它对版本化的URL所做的那样。StaticFileHandler.make_static_url和RequestHandler.static_url现在有一个额外的关键字参数include_version禁止URL版本控制。StaticFileHandler现在以块的形式读取文件,这将减少内存碎片。修复了
Date系统区域设置设置为非英语配置时的头和cookie过期日期。
tornado.websocket¶
WebSocketHandler现在渔获量StreamClosedError并运行on_close立即而不是记录堆栈跟踪。新方法
WebSocketHandler.set_nodelay可用于设置TCP_NODELAY旗帜。
tornado.wsgi¶
在中修复了一个异常
WSGIContainer在写入输出时关闭连接。