💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
### Navigation - [index](# "General Index") - [modules](# "Python Module Index") | - [next](# "What鈥檚 new in Tornado 2.3") | - [previous](# "What鈥檚 new in Tornado 2.4.1") | - [Tornado 4.4.dev1 documentation](#) » - [Release notes](#) » # What's new in Tornado 2.4 ### Sep 4, 2012 ### General - Fixed Python 3 bugs in [`tornado.auth`](# "tornado.auth"), [`tornado.locale`](# "tornado.locale"), and [`tornado.wsgi`](# "tornado.wsgi"). ### HTTP clients - Removed `max_simultaneous_connections` argument from [`tornado.httpclient`](# "tornado.httpclient")(both implementations). This argument hasn't been useful for some time(if you were using it you probably want `max_clients` instead) - `tornado.simple_httpclient` now accepts and ignores HTTP 1xx statusresponses. ### [`tornado.ioloop`](# "tornado.ioloop") and [`tornado.iostream`](# "tornado.iostream") - Fixed a bug introduced in 2.3 that would cause [`IOStream`](# "tornado.iostream.IOStream") close callbacksto not run if there were pending reads. - Improved error handling in [`SSLIOStream`](# "tornado.iostream.SSLIOStream") and SSL-enabled [`TCPServer`](# "tornado.tcpserver.TCPServer"). - `SSLIOStream.get_ssl_certificate` now has a `binary_form` argumentwhich is passed to `SSLSocket.getpeercert`. - `SSLIOStream.write` can now be called while the connection is in progress,same as non-SSL [`IOStream`](# "tornado.iostream.IOStream") (but be careful not to send sensitive data untilthe connection has completed and the certificate has been verified). - [`IOLoop.add_handler`](# "tornado.ioloop.IOLoop.add_handler") cannot be called more than once with the same filedescriptor. This was always true for `epoll`, but now the otherimplementations enforce it too. - On Windows, [`TCPServer`](# "tornado.tcpserver.TCPServer") uses `SO_EXCLUSIVEADDRUSER` instead of `SO_REUSEADDR`. ### [`tornado.template`](# "tornado.template") - `{% break %}` and `{% continue %}` can now be used looping constructsin templates. - It is no longer an error for an if/else/for/etc block in a template tohave an empty body. ### [`tornado.testing`](# "tornado.testing") - New class [`tornado.testing.AsyncHTTPSTestCase`](# "tornado.testing.AsyncHTTPSTestCase") is like [`AsyncHTTPTestCase`](# "tornado.testing.AsyncHTTPTestCase").but enables SSL for the testing server (by default using a self-signedtesting certificate). - [`tornado.testing.main`](# "tornado.testing.main") now accepts additional keyword arguments and forwardsthem to [`unittest.main`](https://docs.python.org/3.4/library/unittest.html#unittest.main "(in Python v3.4)") [https://docs.python.org/3.4/library/unittest.html#unittest.main]. ### [`tornado.web`](# "tornado.web") - New method [`RequestHandler.get_template_namespace`](# "tornado.web.RequestHandler.get_template_namespace") can be overridden toadd additional variables without modifying keyword arguments to`render_string`. - [`RequestHandler.add_header`](# "tornado.web.RequestHandler.add_header") now works with [`WSGIApplication`](# "tornado.wsgi.WSGIApplication"). - [`RequestHandler.get_secure_cookie`](# "tornado.web.RequestHandler.get_secure_cookie") now handles a potential error case. - `RequestHandler.__init__` now calls `super().__init__` to ensure thatall constructors are called when multiple inheritance is used. - Docs have been updated with a description of all available[`Application settings`](# "tornado.web.Application.settings") ### Other modules - [`OAuthMixin`](# "tornado.auth.OAuthMixin") now accepts `"oob"` as a `callback_uri`. - [`OpenIdMixin`](# "tornado.auth.OpenIdMixin") now also returns the `claimed_id` field for the user. - [`tornado.platform.twisted`](# "tornado.platform.twisted") shutdown sequence is now more compatible. - The logging configuration used in [`tornado.options`](# "tornado.options") is now more tolerantof non-ascii byte strings. © Copyright 2009-2016, The Tornado Authors. Created using [Sphinx](http://sphinx-doc.org/) 1.3.5.