tornado.util ——通用工具

其他实用程序函数和类。

此模块由Tornado内部使用。不一定期望这里定义的函数和类对其他应用程序有用,但是如果它们是这样的话,它们会被记录在这里。

本单元中面向公众的部分是 Configurable 类及其 configure 方法,它成为其子类的接口的一部分,包括 AsyncHTTPClientIOLoopResolver .

class tornado.util.TimeoutError[源代码]

异常由以下人员引发 gen.with_timeoutIOLoop.run_sync

在 5.0 版更改: 统一的 tornado.gen.TimeoutErrortornado.ioloop.TimeoutError 作为 tornado.util.TimeoutError . 两个以前的名字仍然是别名。

在 6.2 版更改: tornado.util.TimeoutError is an alias to asyncio.TimeoutError

class tornado.util.ObjectDict[源代码]

使用属性样式访问使字典的行为类似于对象。

class tornado.util.GzipDecompressor[源代码]

流式gzip解压缩程序。

接口类似于 zlib.decompressobj (没有一些可选参数,但它了解gzip头和校验和。

decompress(value: bytes, max_length: int = 0) bytes[源代码]

解压缩块,返回新的可用数据。

一些数据可以进行缓冲,以便以后处理; flush 必须在没有更多输入数据时调用,以确保已处理所有数据。

如果 max_length 给出了一些输入数据 unconsumed_tail ;必须检索此值并将其传递回将来的调用 decompress 如果不是空的。

property unconsumed_tail: bytes

返回剩余的未使用部分

flush() bytes[源代码]

返回解压缩未返回的所有剩余缓冲数据。

还检查错误,如截断的输入。之后不能对此对象调用其他方法 flush .

tornado.util.import_object(name: str) Any[源代码]

按名称导入对象。

import_object('x') 等于 import x . import_object('x.y.z') 等于 from x.y import z .

>>> import tornado.escape
>>> import_object('tornado.escape') is tornado.escape
True
>>> import_object('tornado.escape.utf8') is tornado.escape.utf8
True
>>> import_object('tornado') is tornado
True
>>> import_object('tornado.missing_module')
Traceback (most recent call last):
    ...
ImportError: No module named missing_module
tornado.util.errno_from_exception(e: BaseException) Optional[int][源代码]

从异常对象提供errno。

有些情况下没有设置errno属性,因此我们将errno从参数中拉出,但如果有人在没有任何参数的情况下实例化异常,则会得到元组错误。所以这个函数抽象了所有的行为,为您提供一个安全的方法来获取errno。

tornado.util.re_unescape(s: str) str[源代码]

逃过一条线 re.escape .

可以提高 ValueError 对于无法由生成的正则表达式 re.escape (例如,包含 \d 不能取消捕获)。

4.4 新版功能.

class tornado.util.Configurable(*args: Any, **kwargs: Any)[源代码]

可配置接口的基类。

可配置接口是一个(抽象)类,其构造函数充当其实现子类之一的工厂函数。可以在运行时使用全局设置其初始值设定项的实现子类以及可选关键字参数 configure .

通过使用构造函数作为工厂方法,接口看起来像一个普通类, isinstance 像往常一样工作,等等。当实施的选择可能是一个全局决策时(例如,当 epoll 是可用的,总是使用它而不是 select 或者当以前的单块类被拆分成专门的子类时。

可配置的子类必须定义类方法 configurable_base and configurable_default, and use the instance method initialize instead of _ _init__.

在 5.0 版更改: 现在可以在类层次结构的多个级别上指定配置。

classmethod configurable_base()[源代码]

返回可配置层次结构的基类。

这通常会返回定义它的类。(这是 not 必然与 cls classmethod参数)。

classmethod configurable_default()[源代码]

如果未配置任何实现类,则返回要使用的实现类。

initialize() None

初始化 Configurable 子类实例。

可配置类应该使用 initialize instead of _ _init__.

在 4.2 版更改: 现在除了关键字参数外,还接受位置参数。

classmethod configure(impl, **kwargs)[源代码]

设置在实例化基类时使用的类。

关键字参数将被保存并添加到传递给构造函数的参数中。这可用于设置某些参数的全局默认值。

classmethod configured_class()[源代码]

返回当前配置的类。

class tornado.util.ArgReplacer(func: Callable, name: str)[源代码]

在中替换一个值 args, kwargs 一对。

检查函数签名以按名称查找参数,无论该参数是通过位置还是关键字传递的。用于装饰和类似包装。

get_old_value(args: Sequence[Any], kwargs: Dict[str, Any], default: Optional[Any] = None) Any[源代码]

返回命名参数的旧值,但不替换它。

返回 default 如果参数不存在。

replace(new_value: Any, args: Sequence[Any], kwargs: Dict[str, Any]) Tuple[Any, Sequence[Any], Dict[str, Any]][源代码]

替换中的命名参数 args, kwargs 具有 new_value .

返回 (old_value, args, kwargs) . 归还的人 argskwargs 对象可能与输入对象不同,或者输入对象可能发生变化。

如果找不到命名参数, new_value 将添加到 kwargs 没有一个会作为 old_value .

tornado.util.timedelta_to_seconds(td)[源代码]

相当于 td.total_seconds() (在python 2.7中引入)。