Streams —Pythonドキュメント
ストリーム
ソースコード: :source: `Lib / asyncio / streams.py`
ストリームは、ネットワーク接続で機能する高レベルの非同期/待機対応プリミティブです。 ストリームを使用すると、コールバックや低レベルのプロトコルやトランスポートを使用せずにデータを送受信できます。
asyncioストリームを使用して記述されたTCPエコークライアントの例を次に示します。
以下の例セクションも参照してください。
流れ関数
次のトップレベルの非同期関数を使用して、ストリームを作成および操作できます。
Unixソケット
StreamReader
- class asyncio.StreamReader
IOストリームからデータを読み取るためのAPIを提供するリーダーオブジェクトを表します。
StreamReader オブジェクトを直接インスタンス化することはお勧めしません。 代わりに
open_connection()
とstart_server()
を使用してください。- at_eof()
バッファが空で
feed_eof()
が呼び出された場合は、True
を返します。
StreamWriter
- class asyncio.StreamWriter
IOストリームにデータを書き込むためのAPIを提供するライターオブジェクトを表します。
StreamWriter オブジェクトを直接インスタンス化することはお勧めしません。 代わりに
open_connection()
とstart_server()
を使用してください。- write(data)
このメソッドは、 data を基になるソケットにすぐに書き込もうとします。 それが失敗した場合、データは送信できるようになるまで内部書き込みバッファのキューに入れられます。
この方法は、
drain()
方法と一緒に使用する必要があります。
- writelines(data)
このメソッドは、バイトのリスト(または反復可能なもの)を基になるソケットにすぐに書き込みます。 それが失敗した場合、データは送信できるようになるまで内部書き込みバッファのキューに入れられます。
この方法は、
drain()
方法と一緒に使用する必要があります。
- close()
このメソッドは、ストリームと基になるソケットを閉じます。
この方法は、
wait_closed()
方法と一緒に使用する必要があります。
- can_write_eof()
基になるトランスポートが write_eof()メソッドをサポートしている場合は
True
を返し、そうでない場合はFalse
を返します。
- write_eof()
バッファリングされた書き込みデータがフラッシュされた後、ストリームの書き込み終了を閉じます。
- transport
基になる非同期トランスポートを返します。
- get_extra_info(name, default=None)
オプションの輸送情報にアクセスします。 詳細については、 BaseTransport.get_extra_info()を参照してください。
- is_closing()
ストリームが閉じている場合、または閉じている途中の場合は、
True
を返します。バージョン3.7の新機能。
例
ストリームを使用するTCPエコークライアント
asyncio.open_connection()
関数を使用するTCPエコークライアント:
ストリームを使用するTCPエコーサーバー
asyncio.start_server()
機能を使用するTCPエコーサーバー:
HTTPヘッダーを取得する
コマンドラインで渡されたURLのHTTPヘッダーをクエリする簡単な例:
使用法:
またはHTTPSの場合:
開いているソケットを登録して、ストリームを使用してデータを待機します
ソケットがopen_connection()
関数を使用してデータを受信するまで待機するコルーチン:
も参照してください
プロトコルを使用してデータを待機するためにオープンソケットを登録する例では、低レベルプロトコルとloop.create_connection()
メソッドを使用します。
読み取りイベントのファイル記述子を監視するの例では、低レベルの loop.add_reader()メソッドを使用してファイル記述子を監視します。