tornado.util — 汎用ユーティリティ

その他のユーティリティ関数とクラス。

このモジュールはTornado内部で使用されます。ここで定義された関数とクラスが他のアプリケーションに役立つとは限りませんが、念のためドキュメント化されています。

このモジュールの一般公開されている部分は、Configurable クラスと、configure メソッドです。これは、AsyncHTTPClientIOLoopResolver を含む、サブクラスのインターフェースの一部となります。

class tornado.util.TimeoutError[ソース]

gen.with_timeout および IOLoop.run_sync によって発生する例外。

バージョン 5.0 で変更: tornado.gen.TimeoutError および tornado.ioloop.TimeoutErrortornado.util.TimeoutError として統合されました。以前の名前は両方ともエイリアスとして残っています。

バージョン 6.2 で変更: tornado.util.TimeoutErrorasyncio.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[ソース]

decompressによってまだ返されていない残りのバッファリングされたデータを返します。

また、入力が途中で切断されたなどのエラーも確認します。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属性が設定されていない場合があるため、argsからerrnoを取得しますが、引数なしでExceptionをインスタンス化すると、タプルエラーが発生します。したがって、この関数は、errnoを安全に取得できるように、そのすべての動作を抽象化します。

tornado.util.re_unescape(s: str) str[ソース]

re.escape によってエスケープされた文字列をアンエスケープします。

re.escape によって生成されなかった正規表現 (たとえば、\d を含む文字列はアンエスケープできません) の場合、ValueError が発生する可能性があります。

バージョン 4.4 で追加。

class tornado.util.Configurable(*args: Any, **kwargs: Any)[ソース]

設定可能なインターフェースの基本クラス。

設定可能なインターフェースとは、(抽象)クラスであり、そのコンストラクタが実装サブクラスの1つのファクトリー関数として機能するものです。実装サブクラスと、そのイニシャライザへのオプションのキーワード引数は、実行時にconfigureでグローバルに設定できます。

コンストラクタをファクトリーメソッドとして使用することで、インターフェースは通常のクラスのように見え、isinstanceは通常どおり機能します。このパターンは、実装の選択がグローバルな決定になる可能性が高い場合(例えば、epollが利用可能な場合、常にselectの代わりに使用する場合)、または以前はモノリシックだったクラスが特殊なサブクラスに分割された場合に最も役立ちます。

設定可能なサブクラスは、クラスメソッドconfigurable_baseconfigurable_defaultを定義し、インスタンスメソッドinitialize__init__の代わりに使用する必要があります。

バージョン 5.0 で変更: クラス階層の複数のレベルで設定を指定できるようになりました。

classmethod configurable_base() Type[Configurable][ソース]

設定可能な階層のベースクラスを返します。

これは通常、それが定義されているクラスを返します(これは、clsクラスメソッドパラメータと同じであるとは限りません)。

classmethod configurable_default() Type[Configurable][ソース]

設定されていない場合に使用される実装クラスを返します。

initialize() None

Configurableサブクラスのインスタンスを初期化します。

設定可能なクラスは、__init__の代わりにinitializeを使用する必要があります。

バージョン 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ペアの1つの値を置き換えます。

関数シグネチャを調べ、位置またはキーワードのどちらで渡されたかに関係なく、名前で引数を見つけます。デコレータや同様のラッパーで使用します。

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) を返します。返される args および kwargs オブジェクトは、入力オブジェクトと同じではない場合や、入力オブジェクトが変更されている場合があります。

名前付き引数が見つからなかった場合、new_valuekwargs に追加され、old_value として None が返されます。

tornado.util.timedelta_to_seconds(td: datetime.timedelta) float[ソース]

td.total_seconds() と同等です (Python 2.7 で導入)。