tornado.util
— 通用工具¶
雜項的實用函式和類別。
這個模組在 Tornado 內部使用。這裡定義的函式和類別不一定對其他應用程式有用,但這裡的文件會說明它們,以防它們有用。
這個模組中唯一公開的部分是 Configurable
類別及其 configure
方法,它成為其子類別介面的一部分,包括 AsyncHTTPClient
、IOLoop
和 Resolver
。
- class tornado.util.TimeoutError[原始碼]¶
gen.with_timeout
和IOLoop.run_sync
引發的例外狀況。在 5.0 版本變更: 將
tornado.gen.TimeoutError
和tornado.ioloop.TimeoutError
合併為tornado.util.TimeoutError
。先前的兩個名稱仍然保留為別名。在 6.2 版本變更:
tornado.util.TimeoutError
是asyncio.TimeoutError
的別名
- class tornado.util.GzipDecompressor[原始碼]¶
串流 gzip 解壓縮器。
介面類似於
zlib.decompressobj
(沒有一些可選引數),但它理解 gzip 標頭和校驗和。
- 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 屬性未設定,因此我們會從 args 中取出 errno,但如果有人在沒有任何 args 的情況下建立 Exception 的實例,則會收到元組錯誤。因此,此函式會抽象所有這些行為,以提供您取得 errno 的安全方法。
- tornado.util.re_unescape(s: str) str [原始碼]¶
取消轉義
re.escape
所轉義的字串。對於可能不是由
re.escape
產生的正規表示式,可能會引發ValueError
(例如,包含\d
的字串無法取消轉義)。4.4 版本中的新功能。
- class tornado.util.Configurable(*args: Any, **kwargs: Any)[原始碼]¶
可配置介面的基底類別。
可配置介面是一個(抽象)類別,其建構子充當其某個實作子類別的工廠函數。實作子類別及其初始設定器的可選關鍵字引數可以使用
configure
在執行時全域設定。透過將建構子用作工廠方法,介面看起來像一個普通的類別,
isinstance
的運作方式與平常相同等等。當實作的選擇很可能是一個全域決策時(例如,當epoll
可用時,始終使用它而不是select
),或者當先前單體類別已分割為專用子類別時,此模式最為有用。可配置的子類別必須定義類別方法
configurable_base
和configurable_default
,並使用實例方法initialize
而不是__init__
。變更於 5.0 版本: 現在可以在類別階層結構的多個層級指定設定。
- classmethod configurable_base() Type[Configurable] [原始碼]¶
傳回可配置階層結構的基底類別。
這通常會傳回定義它的類別。(這與
cls
類別方法參數不一定相同)。
- classmethod configurable_default() Type[Configurable] [原始碼]¶
傳回如果未設定則要使用的實作類別。
- initialize() None ¶
初始化
Configurable
子類別實例。可配置類別應使用
initialize
而不是__init__
。變更於 4.2 版本: 現在除了關鍵字引數外,還接受位置引數。
- classmethod configure(impl: Union[None, str, Type[Configurable]], **kwargs: Any) None [原始碼]¶
設定當實例化基底類別時要使用的類別。
關鍵字引數將會儲存並新增至傳遞至建構子的引數。這可以用於為某些參數設定全域預設值。
- classmethod configured_class() Type[Configurable] [原始碼]¶
傳回目前已設定的類別。
- class tornado.util.ArgReplacer(func: Callable, name: str)[原始碼]¶
取代
args、kwargs
對中的一個值。檢查函式簽名以依名稱尋找引數,無論是以位置還是關鍵字傳遞。用於裝飾器和類似的包裝函式。
- tornado.util.timedelta_to_seconds(td: datetime.timedelta) float [原始碼]¶
等同於
td.total_seconds()
(在 Python 2.7 中引入)。