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
.这个
HTTPServer
no_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
这有时会导致数据被传递到最终回调,而不是流式回调。这个
IOStream
close 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-Since
1970年以前的时间戳。新方法
RequestHandler.log_exception
can 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.asynchronous
decorator不用于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
在写入输出时关闭连接。