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 が発生します。