tornado.netutil — その他のネットワークユーティリティ¶
その他のネットワークユーティリティコード。
- tornado.netutil.bind_sockets(port: int, address: Optional[str] = None, family: AddressFamily = AddressFamily.AF_UNSPEC, backlog: int = 128, flags: Optional[int] = None, reuse_port: bool = False) List[socket][ソース]¶
指定されたポートとアドレスにバインドされたリスニングソケットを作成します。
ソケットオブジェクトのリストを返します(指定されたアドレスが複数のIPアドレスにマップされる場合、複数のソケットが返されます。これはIPv4とIPv6の混在使用で最も一般的です)。
アドレスはIPアドレスまたはホスト名のいずれかです。ホスト名の場合、サーバーはその名前に関連付けられたすべてのIPアドレスでリッスンします。アドレスは、使用可能なすべてのインターフェースでリッスンするために、空の文字列またはNoneにすることができます。ファミリは、IPv4またはIPv6アドレスに制限するために、
socket.AF_INETまたはsocket.AF_INET6のいずれかに設定できます。それ以外の場合は、使用可能であれば両方が使用されます。backlog引数は、socket.listen()と同じ意味を持ちます。flagsは、getaddrinfoへのAI_*フラグのビットマスクです。たとえば、socket.AI_PASSIVE | socket.AI_NUMERICHOSTなどです。reuse_portオプションは、リスト内のすべてのソケットに対してSO_REUSEPORTオプションを設定します。プラットフォームがこのオプションをサポートしていない場合、ValueErrorが発生します。
- tornado.netutil.bind_unix_socket(file: str, mode: int = 384, backlog: int = 128) socket[ソース]¶
リスニングunixソケットを作成します。
指定された名前のソケットが既に存在する場合は、削除されます。その名前の他のファイルが存在する場合は、例外が発生します。
ソケットオブジェクトを返します(
bind_socketsのようなソケットオブジェクトのリストではありません)
- tornado.netutil.add_accept_handler(sock: socket, callback: Callable[[socket, Any], None]) Callable[[], None][ソース]¶
IOLoopイベントハンドラーを追加して、sockで新しい接続を受け入れます。接続が受け入れられると、
callback(connection, address)が実行されます(connectionはソケットオブジェクト、addressは接続の相手側のアドレスです)。このシグネチャは、IOLoopハンドラーで使用されるcallback(fd, events)シグネチャとは異なることに注意してください。呼び出し可能なものが返されます。呼び出されると、
IOLoopイベントハンドラーが削除され、それ以上の受信接続の処理が停止します。バージョン 5.0 で変更:
io_loop引数(バージョン4.1以降非推奨)が削除されました。バージョン 5.0 で変更: 呼び出し可能なものが返されるようになりました(以前は
Noneが返されていました)。
- tornado.netutil.is_valid_ip(ip: str) bool[ソース]¶
与えられた文字列が正しい形式のIPアドレスであれば、
Trueを返します。IPv4とIPv6をサポートします。
- class tornado.netutil.Resolver(*args: Any, **kwargs: Any)[ソース]¶
設定可能な非同期DNSリゾルバインターフェース。
デフォルトでは、ブロッキング実装が使用されます(単に
socket.getaddrinfoを呼び出すだけです)。別の実装は、Resolver.configureクラスメソッドを使用して選択できます。Resolver.configure('tornado.netutil.ThreadedResolver')
Tornadoに含まれるこのインターフェースの実装は次のとおりです。
バージョン 5.0 で変更: デフォルトの実装が
BlockingResolverからDefaultExecutorResolverに変更されました。バージョン 6.2 で変更: デフォルトの実装が
DefaultExecutorResolverからDefaultLoopResolverに変更されました。- resolve(host: str, port: int, family: AddressFamily = AddressFamily.AF_UNSPEC) Awaitable[List[Tuple[int, Any]]][ソース]¶
アドレスを解決します。
host引数は、ホスト名またはリテラルIPアドレスである可能性のある文字列です。結果が(family、address)ペアのリストである
Futureを返します。ここで、addressは、socket.connectに渡すのに適したタプルです(つまり、IPv4の場合は(host, port)ペア、IPv6の場合は追加のフィールドが存在する場合があります)。callbackが渡された場合、完了時に引数として結果を使用して実行されます。- 例外
IOError – アドレスを解決できない場合。
バージョン 4.4 で変更: すべての実装で
IOErrorを発生させるように標準化しました。バージョン 6.0 で変更:
callback引数が削除されました。代わりに返された awaitable オブジェクトを使用してください。
- class tornado.netutil.DefaultExecutorResolver(*args: Any, **kwargs: Any)[ソース]¶
IOLoop.run_in_executorを使用するリゾルバ実装。バージョン 5.0 で追加.
バージョン 6.2 から非推奨: 代わりに
DefaultLoopResolverを使用してください。
- class tornado.netutil.DefaultLoopResolver(*args: Any, **kwargs: Any)[ソース]¶
asyncio.loop.getaddrinfoを使用するリゾルバ実装。
- class tornado.netutil.ExecutorResolver(*args: Any, **kwargs: Any)[ソース]¶
concurrent.futures.Executorを使用したリゾルバーの実装です。使用するエグゼキューターをより詳細に制御する必要がある場合は、
ThreadedResolverの代わりに使用してください。close_resolver=Falseが指定されていない限り、リゾルバーが閉じられるとエグゼキューターはシャットダウンされます。同じエグゼキューターを他の場所で再利用したい場合はこれを使用してください。バージョン 5.0 で変更:
io_loop引数(バージョン4.1以降非推奨)が削除されました。バージョン 5.0 で非推奨: デフォルトの
Resolverはasyncio.loop.getaddrinfoを使用するようになりました。このクラスの代わりにそれを使用してください。
- class tornado.netutil.BlockingResolver(*args: Any, **kwargs: Any)[ソース]¶
socket.getaddrinfoを使用した、デフォルトのResolverの実装です。IOLoopは解決中にブロックされますが、コールバックは次のIOLoopのイテレーションまで実行されません。バージョン 5.0 で非推奨: デフォルトの
ResolverはIOLoop.run_in_executorを使用するようになりました。このクラスの代わりにそれを使用してください。
- class tornado.netutil.ThreadedResolver(*args: Any, **kwargs: Any)[ソース]¶
マルチスレッドによる非ブロッキングの
Resolverの実装です。concurrent.futuresパッケージがインストールされている必要があります(Python 3.2 以降の標準ライブラリに含まれています。古いバージョンではpip install futuresでインストールできます)。スレッドプールのサイズは次のように設定できます。
Resolver.configure('tornado.netutil.ThreadedResolver', num_threads=10)
バージョン 3.1 で変更: すべての
ThreadedResolverは単一のスレッドプールを共有し、そのサイズは最初に作成されたもので設定されます。バージョン 5.0 で非推奨: デフォルトの
ResolverはIOLoop.run_in_executorを使用するようになりました。このクラスの代わりにそれを使用してください。
- class tornado.netutil.OverrideResolver(*args: Any, **kwargs: Any)[ソース]¶
オーバーライドのマッピングを使用してリゾルバーをラップします。
これは、システム全体の設定を変更せずに、ローカル DNS の変更(たとえばテスト用)を行うために使用できます。
マッピングには 3 つの形式があります。
{ # Hostname to host or ip "example.com": "127.0.1.1", # Host+port to host+port ("login.example.com", 443): ("localhost", 1443), # Host+port+address family to host+port ("login.example.com", 443, socket.AF_INET6): ("::1", 1443), }
バージョン 5.0 で変更: ホスト、ポート、ファミリのトリプレットのサポートを追加しました。
- tornado.netutil.ssl_options_to_context(ssl_options: Union[Dict[str, Any], SSLContext], server_side: Optional[bool] = None) SSLContext[ソース]¶
ssl_optionsディクショナリをSSLContextオブジェクトに変換しようとします。ssl_optionsディクショナリには、ssl.SSLContext.wrap_socketに渡されるキーワードが含まれています。Python 2.7.9 以降では、ssl.SSLContextオブジェクトを代わりに使用できます。この関数は、ディクショナリ形式を同等のSSLContextに変換し、両方の形式を受け入れるコンポーネントが、SNI や NPN などの機能を使用するためにSSLContextバージョンにアップグレードする必要がある場合に使用できます。バージョン 6.2 で変更: server_side 引数を追加しました。この引数を省略すると、Python 3.10 で DeprecationWarning が発生します。
- tornado.netutil.ssl_wrap_socket(socket: socket, ssl_options: Union[Dict[str, Any], SSLContext], server_hostname: Optional[str] = None, server_side: Optional[bool] = None, **kwargs: Any) SSLSocket[ソース]¶
指定されたソケットをラップする
ssl.SSLSocketを返します。ssl_optionsは、ssl.SSLContextオブジェクトか、(ssl_options_to_contextが受け入れるような)辞書である可能性があります。追加のキーワード引数は、ssl.SSLContext.wrap_socketに渡されます。バージョン 6.2 で変更: server_side 引数を追加しました。この引数を省略すると、Python 3.10 で DeprecationWarning が発生します。