Tornado 通用utilities

2022-03-11 14:45 更新

該模塊由 Tornado 內部使用。 不一定期望此處定義的函數(shù)和類對其他應用程序有用,但如果有用,它們會在此處記錄。

該模塊的一個面向公眾的部分是 ?Configurable類及其配置方法,它成為其子類接口的一部分,包括 ?AsyncHTTPClient?、?IOLoop和 ?Resolver

exception tornado.util.TimeoutError

?with_timeout和 ?IOLoop.run_sync? 引發(fā)的異常。

在 5.0 版更改: 將 ?tornado.gen.TimeoutError? 和 ?tornado.ioloop.TimeoutError? 統(tǒng)一為 ?tornado.util.TimeoutError?。 兩個以前的名字都保留為別名。

class tornado.util.ObjectDict

使字典表現(xiàn)得像一個對象,具有屬性樣式訪問。

class tornado.util.GzipDecompressor

流式 ?gzip解壓縮器。

該接口類似于 ?zlib.decompressobj? 的接口(沒有一些可選參數(shù),但它理解 ?gzip表頭和校驗和)。

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

解壓縮一個塊,返回新的可用數(shù)據(jù)。

一些數(shù)據(jù)可能會被緩沖以供以后處理; 當沒有更多的輸入數(shù)據(jù)時,必須調用 ?flush以確保所有數(shù)據(jù)都已處理。

如果給定了 ?max_length?,則 ?unconsumed_tail中可能會遺留一些輸入數(shù)據(jù); 如果它不為空,您必須檢索此值并將其傳遞回對 ?decompress的 ?future?調用。

unconsumed_tail

返回剩余的未消耗部分

flush() → bytes

返回解壓縮尚未返回的任何剩余緩沖數(shù)據(jù)。

還檢查諸如截斷輸入之類的錯誤。 在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]

提供來自 ?Exception對象的 ?errno?。

在某些情況下,沒有設置 ?errno屬性,因此我們將 ?errno從 ?args中提取出來,但是如果有人在沒有任何 ?args的情況下實例化 ?Exception,您將收到元組錯誤。 所以這個函數(shù)抽象了所有的行為,給你一個安全的方法來獲取 ?errno?。

tornado.util.re_unescape(s: str) → str

取消轉義由 ?re.escape? 轉義的字符串。

對于 ?re.escape? 無法生成的正則表達式可能會引發(fā) ?ValueError?(例如,包含 ?\d? 的字符串不能被轉義)。

class tornado.util.Configurable

可配置接口的基類。

可配置接口是一個(抽象)類,其構造函數(shù)充當其實現(xiàn)子類之一的工廠函數(shù)。 可以在運行時使用 ?configure全局設置實現(xiàn)子類及其初始化程序的可選關鍵字參數(shù)。

通過使用構造函數(shù)作為工廠方法,接口看起來像一個普通的類,isinstance 像往常一樣工作等。這種模式在實現(xiàn)的選擇可能是全局決策時最有用(例如,當 ?epoll可用時,總是使用 它而不是 ?select?),或者當以前的整體類被拆分為專門的子類時。

可配置子類必須定義類方法?configurable_base和?configurable_default?,并使用實例方法?initialize而不是?__init__?。

在 5.0 版更改: 現(xiàn)在可以在類層次結構的多個級別指定配置。

classmethod configurable_base()

返回可配置層次結構的基類。

這通常會返回定義它的類。 (不一定與clsclassmethod 參數(shù)相同)。

classmethod configurable_default()

如果沒有配置,則返回要使用的實現(xiàn)類。

initialize() → None

初始化一個可配置的子類實例。

可配置類應該使用?initialize?而不是 ?__init__?。

classmethod configure(impl, **kwargs)

設置基類實例化時使用的類。

關鍵字參數(shù)將被保存并添加到傳遞給構造函數(shù)的參數(shù)中。 這可用于為某些參數(shù)設置全局默認值。

classmethod configured_class()

返回當前配置的類。

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

替換 (?args?、?kwargs)鍵值對中的一個值。

檢查函數(shù)簽名以按名稱查找參數(shù),無論它是通過位置還是關鍵字傳遞。 用于裝飾器和類似的包裝器。

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

返回命名參數(shù)的舊值而不替換它。

如果參數(shù)不存在,則返回默認值。

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

將 ?args?、?kwargs中的命名參數(shù)替換為 ?new_value?。

返回? (old_value, args, kwargs)?。 返回的 ?args?和 ?kwargs對象可能與輸入對象不同,或者輸入對象可能發(fā)生了變異。

如果未找到命名參數(shù),則將 ?new_value添加到 ?kwargs中,并且 ?None將作為 ?old_value返回。

tornado.util.timedelta_to_seconds(td)

等同于 ?td.total_seconds()?(在 Python 2.7 中引入)。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號