On this page |
コマンドチェーン
このノードは、Pythonサーバーを起動するワークアイテムを作成します。 これは、Command Server Endノードで終了するブロックの開始ブロックです。
Note
これは単なるPythonプロセスであってhython
プロセスではないので、hou
モジュールは利用不可でライセンス不要です。
hython
サーバーに関してはHoudini Server Beginを参照してください。
-
このブロックの間では、サーバーは稼働したままでコマンドを受ける準備ができています。
-
このブロック内にCommand Sendノードを使用することでPythonサーバーと通信することができます。 このブロック内のワークアイテムは、(並列ではなく)次々と直列で実行されます。
-
セッション内の最後のワークアイテムが終了すると、Command Server EndノードがPythonサーバーをシャットダウンします。
-
オプションで、複数の並列サーバー、または、同じサーバー内での複数の直列セッション"ループ"をスケジュールに組むことができます。 Session Count from Upstream Items パラメータと Number of Sessions パラメータを参照してください。
コマンドチェーンの使い方に関するさらなる詳細は、コマンドサーバーを参照してください。
サーバーの実装
"Python"サーバーは、単純なサーバーを独自に実装できるように設計されています。
Pythonサーバー系ノードは、XML/RPCベースのプロトコルに対応しているので、HTTPを介してXMLスニペットを渡すことで"リモート関数コール"インターフェースを用意することができます。
Python標準ライブラリに含まれているライブラリ(Python2.7ならSimpleXMLRPCServer
、Python3ならxmlrpc.server
)を使ってXML/RPCサーバーを実装することができます。
この用途のモデルとして pdgjob.genericrpc モジュールを使用することができます。
Server Command パラメータには、サーバーを起動するためのコマンドラインを指定します。
ホスト名とポート番号を渡す方法は、パラメータのヘルプを参照してください。
デフォルトでは、システムパスのPythonまたはHoudiniに同梱されているPythonのどちらかでPythonが起動します。
この'デフォルト'のPythonは、そのコマンド内では__PDG_PYTHON__
として示されています。
デフォルトでは、"PDG_SCRIPTDIR/genericrpc.py"が実行されます。
そのファイルをベースに独自のサーバーの構築を始めると良いでしょう。
TOP Attributes
|
str |
|
|
[int] |
このアトリビュートは、Feedback Beginノードから継承されます。 これは、ループに関連付けられた一連のワークアイテムをループさせる反復回数です。
入れ子のフィードバックループを使用する時は、レベル毎に反復回数を指定したいので、このアトリビュートには配列値を指定することができます。
一番外側のループのループ反復値は |
|
int |
このアトリビュートは、Feedback Beginノードから継承されます。 ワークアイテムがどのループに関連しているのかを追跡します。 このアトリビュートは、同じFeedback Beginノード内で複数の独立したループを生成させる時に関係します。 例えば、Wedgeノードを使ってFeedback Beginノードを駆動させる時です。 |
|
int |
このアトリビュートは、Feedback Beginノードから継承されます。 このアトリビュートは、ループの合計の反復回数です。 |
パラメータ
Node
Work Item Generation
このノードが静的または動的なワークアイテムのどちらを生成するかどうか。 このノードのワークアイテムが静的に計算可能かどうか、もしくは、動的に生成させる必要があるかどうか分からないのであれば、通常では、これを"Automatic"のままに設定してください。
Dynamic
このノードが常に動的なワークアイテムを生成します。つまり、上流のワークアイテムが判明するまで待機し、その上流のワークアイテムから新しいワークアイテムを生成します。
Static
このノードが常に静的なワークアイテムを生成します。つまり、ネットワークを実行する前にパラメータ(と上流の静的なワークアイテム)に基づいて必要だと思われるだけの数のワークアイテムを生成します。
Automatic
入力が静的(静的なプロセッサ、静的な入力のみを使ったパーティショナー、マッパー)な場合、このノードは静的なワークアイテムを生成し、そうでない場合、動的なワークアイテムを生成します。
Session Count from Upstream Items
これを有効にすると、このノードは、単一サーバーインスタンスを作成して、入力ワークアイテム毎に1回直列でブロックをループさせます。 これを無効にすると、このノードは、入力ワークアイテム毎に並列サーバーインスタンスを作成します(そして、 Number of Sessions パラメータを使用することで、インスタンス毎のセッションループの数を指定することができます)。
Number of Sessions
Session Count from Upstream Items が無効の時、ここには、サーバーインスタンス毎にセッションブロックをループさせる回数を指定します。 これらのセッションは、順々に直列で実行されます。
Copy Inputs For
入力ファイルをループアイテムにコピーさせる方法を決定します。 デフォルトでは、上流のファイルがすべての入力ファイルにコピーされますが、1回目のループだけ入力ファイルをコピーすることも何もコピーしないこともできます。
No Iterations
上流の入力ファイルをどのループ反復アイテムの出力にもコピーしません。
First Iteration
上流の入力ファイルを1回目のループのみの出力ファイルリストにコピーします。
All Iterations
上流の入力ファイルをすべてのループの出力ファイルリストにコピーします。
Append Index to Server Name
サーバーの並列インスタンス毎に Shared Server Name の名前の後に現行ワークアイテムインデックスを付けます(例えば、shareserver
→ sharedserver0
、sharedserver1
など)。
これによって、並列インスタンス間の名前の干渉を回避することができます。
Server Port
サーバーと通信するTCPポート番号( Connect To Existing Server が無効な時)、 または 、既存サーバーに接続する際に使用するポート番号( Connect To Existing Server が有効な時)。
デフォルト値の0
は、システム側に未使用ポートを動的に選択するように伝えます。
通常では、これがあなたの求めている挙動でしょう。
そのポート番号を特定の範囲内に維持したい(ポート番号が利用できることを保証したい)場合、ここには9000 + @pdg_index
のようなエクスプレッションを使用することができます。
この値をサーバー起動スクリプトに渡す方法は、 Server Command パラメータのヘルプを参照してください。
Note
UNIXシステムポート番号の0-1023はスーパーユーザーのみ使用可能なので、おそらく1024以上のポート番号を選択する必要があります。
Connect to Existing Server
これを有効にすると、ワークアイテムは、新しいサーバープロセスを起動せずに、ホストアドレス上の既存サーバーに接続されます。 これは、アセット管理システムなどの中央サーバーに接続する時に役立ちますが、必ずサーバーへのアクセスをシリアライズ化してください。
Server Address
Connect to Existing Server が有効な時、接続先のサーバーのホストアドレスを指定します。 この既存サーバーで使用するポート番号を Server Port パラメータに設定してください。
Load Timeout
共有サーバーインスタンスに到達可能であるかどうかを初期検証する時に使用するタイムアウト。 通信に成功せずにこのタイムアウトが過ぎると、そのサーバーのワークアイテムが失敗としてマークされます。
Server Command
サーバーを起動するために実行するコマンド。 このコマンドラインは、リモートサーバー上で実行しても動作するはずなので、おそらく、共有ネットワークファイルシステム上の既知の場所に起動スクリプトを配置しても構いません。
以下のパラメータを使用することで、このノードで作成されるワークアイテムのアトリビュートの名前をカスタマイズすることができます。
Iteration
ワークアイテムの反復回数を格納するアトリビュートの名前。
Number of Iterations
合計の反復回数を格納するアトリビュートの名前。
Loop Number
ループ番号を格納するアトリビュートの名前。
Schedulers
TOP Scheduler Override
このパラメータは、このノードのTOPスケジューラを上書きします。
Work Item Priority
このパラメータは、現行スケジューラがこのノード内のワークアイテムの優先度を設定する方法を決めます。
Inherit From Upstream Item
ワークアイテムは、親ワークアイテムの優先度を継承します。ワークアイテムに親ワークアイテムがなければ、その優先度は0に設定されます。
Custom Expression
ワークアイテムの優先度は、 Priority Expression の値に設定されます。
Node Defines Priority
ワークアイテムの優先度は、このノード自身の内部優先度計算に基づいて設定されます。
このオプションは、 Python Processor TOP, ROP Fetch TOP, ROP Output TOPのノードでのみ利用可能です。 これらのノードは、各自のノードロジックで実装された優先度設定スキームを定義しています。
Priority Expression
このパラメータは、 Work Item Priority が Custom Expression に設定されている時にのみ利用可能です。
このパラメータには、ワークアイテムの優先度を設定するためのエクスプレッションを指定します。 このエクスプレッションは、ノード内のワークアイム毎に評価されます。
See also |