异步程序的超时上下文管理器
async_timeout的Python项目详细描述
异步超时
异步兼容超时上下文管理器。
使用示例
上下文管理器在应用超时时非常有用 围绕代码块的逻辑,或者当asyncio.wait_for()是 不合适。而且比^{tt1}快得多$ 因为timeout不创建新任务。
timeout(timeout, *, loop=None)调用返回一个上下文管理器 在timeout过期时取消块:
async with timeout(1.5): await inner()
- 如果inner()的执行速度超过1.5秒,则无 发生。
- 否则,inner()将通过发送 asyncio.CancelledError进入,但是asyncio.TimeoutError是 在上下文管理器范围之外引发。
timeout参数可以是None,用于跳过超时功能。
上下文管理器具有.expired属性,用于检查是否发生超时 完全在上下文管理器中:
async with timeout(1.5) as cm: await inner() print(cm.expired)
如果inner()执行被取消,则属性为True。 超时上下文管理器。
如果inner()调用显式引发TimeoutErrorcm.expired 是False。
安装
$ pip install async-timeout
库仅为python 3!
更改
3.0.1(2018-10-09)
- 更积极的打字(48)
3.0.0(2018-05-05)
- 删除Python3.4,支持的最低版本是Python3.5.3
- 提供类型注释
2.0.1(2018-03-13)
- 修复python 3.7上的PendingDeprecationWarning(33)
2.0.0(2017-10-09)
- 更改了超时<;=0行为
- 向后不兼容更改,在此版本之前 无的快捷方式
- 当timeout<;=0timeouterror提高得更快时
1.4.0(2017-09-09)
- 实现剩余属性(20)
- 如果超时尚未启动或未受限制启动: 剩余为无
- 如果超时过期:剩余为0.0
- 所有其他:触发Timeouterror之前的大致时间量
1.3.0(2017-08-23)
- 超时时不要抑制嵌套异常。异常上下文点 在已取消且已暂停的线路上等待(13)
- 引入.timeout属性(16)
- 添加用作异步上下文管理器的方法(9)
1.2.1(2017-05-02)
- 支持未发布事件循环的“当前任务”API。
1.2.0(2017-03-11)
- 上下文管理器退出< /LI>
- 0表示无操作超时
1.1.0(2016-10-20)
- 重命名为异步超时
1.0.0(2016-09-09)
- 第一个版本。