tornado.process
— 複数プロセスのユーティリティ¶
サーバーを複数プロセスにフォークすることと、サブプロセスの管理の両方を含む、複数プロセスを扱うためのユーティリティです。
- 例外 tornado.process.CalledProcessError[ソース]¶
subprocess.CalledProcessError
のエイリアスです。
- tornado.process.fork_processes(num_processes: Optional[int], max_restarts: Optional[int] = None) int [ソース]¶
複数のワーカープロセスを開始します。
num_processes
が None または <= 0 の場合、このマシンで使用可能なコア数を検出し、その数の子プロセスをフォークします。num_processes
が指定され、> 0 の場合、その特定数のサブプロセスをフォークします。プロセスを使用しており、スレッドを使用していないため、サーバーコード間には共有メモリがありません。
複数プロセスは、autoreloadモジュール(または
tornado.web.Application
のautoreload=True
オプション。これはdebug=True
の場合、デフォルトでTrueになります)と互換性がありません。複数プロセスを使用する場合、fork_processes
を呼び出すまで、IOLoopを作成または参照することはできません。各子プロセスで、
fork_processes
は、0からnum_processes
の間の数である、そのタスクIDを返します。異常終了したプロセス(シグナルまたはゼロ以外の終了ステータスによる)は、同じIDで再起動されます(最大max_restarts
回)。親プロセスでは、fork_processes
は、すべての子プロセスが正常に終了した後、sys.exit(0)
を呼び出します。max_restarts のデフォルトは 100 です。
利用可能性: Unix
- tornado.process.task_id() Optional[int] [ソース]¶
現在のタスクIDを返します(存在する場合)。
このプロセスが
fork_processes
によって作成されていない場合は、Noneを返します。
- クラス tornado.process.Subprocess(*args: Any, **kwargs: Any)[ソース]¶
IOStreamサポート付きで
subprocess.Popen
をラップします。コンストラクタは、以下の追加事項を除き、
subprocess.Popen
と同じです。stdin
、stdout
、およびstderr
にはtornado.process.Subprocess.STREAM
という値を指定できます。これにより、結果のSubprocessの対応する属性がPipeIOStream
になります。このオプションを使用する場合は、使い終わったらストリームを閉じる責任があります。
Subprocess.STREAM
オプションとset_exit_callback
およびwait_for_exit
メソッドは、Windowsでは機能しません。したがって、このプラットフォームでsubprocess.Popen
の代わりにこのクラスを使用する理由はありません。バージョン 5.0 で変更:
io_loop
引数(バージョン4.1以降非推奨)が削除されました。- set_exit_callback(callback: Callable[[int], None]) None [ソース]¶
このプロセスが終了したときに
callback
を実行します。コールバックは、プロセスの戻りコードを1つの引数として受け取ります。
このメソッドは
SIGCHLD
ハンドラーを使用します。これはグローバル設定であり、同じシグナルを処理しようとしている他のライブラリと競合する可能性があります。複数のIOLoop
を使用している場合は、シグナルハンドラーを実行するIOLoop
を指定するために、最初にSubprocess.initialize
を呼び出す必要がある場合があります。多くの場合、シグナルハンドラーが問題を引き起こしている場合、stdoutまたはstderrストリームのクローズコールバックを終了コールバックの代替として使用できます。
利用可能性: Unix
- wait_for_exit(raise_error: bool = True) Future[int] [source]¶
プロセスが終了するまで解決されない
Future
を返します。使用方法
ret = yield proc.wait_for_exit()
これは、
set_exit_callback
に対するコルーチンフレンドリーな代替手段であり(ブロッキングするsubprocess.Popen.wait
の代替手段でもあります)。デフォルトでは、プロセスの終了ステータスがゼロ以外の場合、
subprocess.CalledProcessError
を発生させます。この動作を抑制し、例外を発生させずに終了ステータスを返すには、wait_for_exit(raise_error=False)
を使用します。バージョン4.2で追加。
利用可能性: Unix