tornado.util — General-purpose utilities

杂项实用程序功能和类.

该模块由Tornado内部使用. 不一定期望此处定义的函数和类将对其他应用程序有用,但是如果有必要,请在此处进行记录.

该模块的一个面向公众的部分是Configurable类及其configure方法,该方法成为其子类(包括AsyncHTTPClientIOLoopResolver子接口的一部分.

tornado.util.bytes_type

builtins.bytes别名

tornado.util.unicode_type

builtins.str别名

tornado.util.basestring_type

builtins.str别名

tornado.util.is_finalizing()

is_finalizing()如果Python正在退出,则返回True.

exception tornado.util.TimeoutError[source]

with_timeoutIOLoop.run_sync引发的异常.

在版本5.0中更改::将 tornado.gen.TimeoutErrortornado.ioloop.TimeoutError统一为tornado.util.TimeoutError . 以前的两个名称都保留为别名.

class tornado.util.ObjectDict[source]

通过属性样式访问使字典的行为像对象一样.

class tornado.util.GzipDecompressor[source]

流式gzip解压缩器.

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

decompress(value: bytes, max_length: int = 0) → bytes[source]

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

某些数据可能会被缓冲以供以后处理; 当没有更多输入数据时,必须调用flush以确保已处理所有数据.

如果给定了max_length ,某些输入数据可能会留在unconsumed_tail ; 如果该值不为空,则必须检索该值并将其传递回将来的调用以进行decompress .

property unconsumed_tail

返回剩余的未消费部分

flush() → bytes[source]

返回尚未通过解压缩返回的所有剩余缓冲数据.

Also checks for errors such as truncated input. No other methods may be called on this object after flush.

tornado.util.import_object(name: str) → Any[source]

通过名称导入对象.

import_object('x')等效于import x . import_object('xyz')等效于from xy 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][source]

从Exception对象提供errno.

在某些情况下,未设置errno属性,因此我们将errno从args中拉出,但是如果有人实例化了一个没有任何args的Exception,则将得到一个元组错误. 因此,此函数将所有行为抽象化,从而为您提供获取errno的安全方法.

tornado.util.re_unescape(s: str) → str[source]

re.escape转义由re.escape转义的字符串.

May raise ValueError for regular expressions which could not have been produced by re.escape (for example, strings containing \d cannot be unescaped).

版本4.4中的新功能.

class tornado.util.Configurable[source]

可配置接口的基类.

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

通过使用构造函数作为工厂方法,接口看起来像普通的类, isinstance照常工作,等等.当实现的选择可能是全局决策时(例如,当epoll可用时,始终使用而不是select ),或者将先前的整体类拆分为专门的子类时.

可配置子类必须定义类方法configurable_baseconfigurable_default ,并使用实例方法initialize而不是__init__ .

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

classmethod configurable_base()[source]

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

通常,这将返回定义它的类. (这并不一定是相同cls类方法参数).

classmethod configurable_default()[source]

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

initialize() → None

初始化可Configurable子类实例.

可配置类应使用initialize而不是__init__ .

在版本4.2中进行了更改:现在,除了关键字参数外,还接受位置参数.

classmethod configure(impl, **kwargs)[source]

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

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

classmethod configured_class()[source]

返回当前配置的类.

class tornado.util.ArgReplacer(func: Callable, name: str)[source]

替换args, kwargs对中的一个值.

检查函数签名以按名称查找自变量,无论它是通过位置还是通过关键字传递的. 用于装饰器和类似的包装纸.

get_old_value(args: Sequence[Any], kwargs: Dict[str, Any], default: Any = None) → Any[source]

返回命名参数的旧值,而不替换它.

如果参数不存在,则返回default .

replace(new_value: Any, args: Sequence[Any], kwargs: Dict[str, Any]) → Tuple[Any, Sequence[Any], Dict[str, Any]][source]

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

返回(old_value, args, kwargs) 返回的argskwargs对象可能与输入对象不同,或者输入对象可能发生了突变.

如果找不到命名参数,则将new_value添加到kwargs并且将没有任何内容作为old_value返回.

tornado.util.timedelta_to_seconds(td)[source]

等效于td.total_seconds() (在Python 2.7中引入).