Tornado 6.0 Documentation
885.76 KB
245 页
0 评论
语言 | 格式 | 评分 |
---|---|---|
英语 | .pdf | 3 |
摘要 | ||
文档介绍了Tornado 6.0版本的新特性、改进和问题修复。主要包括结束对Python 2.7和3.4的支持,移除被废弃的API,增加了类型注解,优化了内部协程的性能,并对多个子模块如auth、concurrent、gen、httpclient、iostream、log等进行了改进。此外,还修复了一些已知问题,如IOStream关闭时的错误处理,WebSocket的新特性支持,以及改进了日志输出和配置。 | ||
AI总结 | ||
以下是对《Tornado 6.0 Documentation》的中文总结,重点突出核心观点和关键信息,语言简洁明了:
---
### 《Tornado 6.0 Documentation》总结
#### 1. **概述**
Tornado 6.0 是一个重要的升级版本,引入了多项新功能和改进,同时移除了部分旧的、已弃用的 API。以下是主要的内容总结:
---
#### 2. **不兼容的更改**
- **Python 支持**:Tornado 6.0 不再支持 Python 2.7 和 3.4,minimum supported Python version 为 3.5.2。
- **移除的 API**:Tornado 5.1 中弃用的 API 已被移除,包括 `tornado.stack_context` 模块和大部分回调参数。
- **回调参数**:大多数模块(如 `tornado.auth`、`tornado.concurrent`、`tornado.gen` 等)已移除回调参数,建议使用协程接口。
- **WebSocketHandler.get**:该方法现在是一个 coroutine,需在子类中正确调用。
- **IOLoop 接口**:部分旧方法(如 `IOLoop.set_blocking_signal_threshold` 和 `IOLoop.log_stack`)已移除。
---
#### 3. **重要改进**
- **类型注解**:新增了与 mypy 兼容的类型注解,提高代码类型检查和 IDE 支持。
- **Native Coroutines**:内部使用 native coroutines,提升性能。
- **WebSocket 改进**:
- 启用压缩时,内存限制适用于解压缩后的数据,防止 DoS 攻击。
- 支持子协议(`websocket_connect` 和 `selected_subprotocol`)。
- `WebSocketHandler.open` 可以是 coroutine。
- **HTTP 客户端**:`raise_error=False` 的行为已更改,仅抑制非 200 状态码的错误。
- **IOLoop 性能优化**:`IOLoop.add_callback` 使用无锁实现,提升性能。
- **日志系统**:日志文件使用 UTF-8 编码,支持 Windows 的彩色日志输出(需 `colorama` 库)。
---
#### 4. **Bug 修复**
- **IOStream**:修复了在读取过程中关闭流时可能引发的 `StreamClosedError`。
- **WebSocketHandler.set_nodelay**:修复了功能失效问题。
- **HTTPResponse.body**:在错误响应中返回空字节串而非 `None`。
- **子协议支持**:修复了子协议相关问题。
- **memory leak**:修复了 IOLoop 对象创建和销毁时的内存泄漏。
- **PeriodicCallback**:修复了时间倒退导致的任务重复执行问题。
---
#### 5. **新功能**
- **异步支持**:`Lock` 和 `Semaphore` 支持 `async with` 语句(Python 3.5+)。
- **日志轮转**:新增基于时间的日志轮转模式。
- **Queue 支持**:`Queue` 支持 `async for` 语句(Python 3.5+)。
- **模板改进**:模板Whitespace 处理更加灵活,支持非 ASCII 文件名。
- **测试功能**:`ExpectLog` 添加 `logged_stack` 属性,方便测试异常日志。
---
#### 6. **安装与兼容性**
- **安装**:使用 `pip install tornado` 即可安装,推荐同时下载源代码以获取 demo 应用。
- **依赖**:支持以下可选包:
- `pycurl`(需 libcurl 7.22+)
- `Twisted`(通过 `tornado.platform.twisted`)
- `pycares`(非阻塞 DNS 解析)
- **平台支持**:
- 推荐在 Linux(with epoll)和 BSD(with kqueue)上运行生产环境。
- Windows 支持,但仅限于开发用途,需手动设置事件循环策略(`WindowsSelectorEventLoopPolicy`)。
---
#### 7. **其他变化**
- **HTTP/1.1 улучш**:修复了 `url_concat` 对片段和查询参数的处理问题。
- **网络工具**:`bind_sockets` 支持 `SO_REUSEPORT`。
- **TCP 客户端**:`TCPClient` 新增 `source_ip` 和 `source_port` 参数。
- **进程管理**:改进了 `Subprocess` 的错误处理。
- ** DNS 解析**:修复了 Solaris 上的 `LookupError` 问题。
- **CPU-count**:改进了 `cpu_count` 的错误处理。
---
以上总结涵盖了 Tornado 6.0 的主要更新内容,重点突出了新功能、不兼容的更改、关键改进和 bug 修复。升级到 Tornado 6.0 时,需特别留意移除的 API 和回调参数的调整。 |
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余
238 页请下载阅读 -
文档评分