On this page |
概要 ¶
プロセス外でクックするワークアイテム(ジョブ)は、データまたはステータスをPDGに送り返したい事が多いです。 PDG Schedulerは、ジョブが開始した時期とジョブスクリプトの実行内容に関係なくそのジョブが成功したのか失敗したのかを追跡することができます。 しかし、そのジョブが出力ファイルを生成する際に、PDG側にその情報を知らせる必要があれば、このAPIを使ってPDGにその情報を送り返してください。 出力ファイルだけでなく、このAPIを使用して実行中のワークアイテムにアトリビュートを書き出すこともできます。
Job APIは主に2つのPythonモジュールで構成されています:
-
pdgjson.py
には、pdg.WorkItemに相当するハイレベルAPIが用意されています。このモジュールを使用することで、ワークアイテムアトリビュートと入力/出力ファイルの読み書きをすることができます。このAPIが推奨されています。 -
pdgcmd.py
には、そのpdgjson.py
で使用されているローレベルAPIが用意されています。必要に応じてこのモジュールも使用することができます。
これら2つのPythonモジュールは、PDG Schedulerによって自動的に$PDG_TEMP/scripts
下にコピーされます。
基本的な使い方 ¶
Pythonモジュール |
挙動 |
---|---|
|
PDGで利用可能なAPIと同様のハイレベル from pdgjson import WorkItem # `$PDG_TEMP/data/workitem.json`にシリアライズされたデータからWorkItemオブジェクトを作成します。 work_item = WorkItem.fromJobEnvironment() # 実行中のワークアイテムからアトリビュート値を読み込みます。 val = work_item.attribValue('myintattrib') # ネットワークコールを介してデータをPDGワークアイテムに送り返します。 work_item.setStringAttrib('runtime_attrib', 'test value', 0) work_item.addOutputFile('/tmp/myoutput.txt') |
|
RPC関数コールを介してPDGと通信するローレベルAPIが用意されています。 from pdgcmd import addOutputFile # ネットワークコールを介してデータをPDGワークアイテムに送り返します。 pdgcmd.setStringAttrib('runtime_attrib', 'test value', 0) pdgcmd.addOutputFile('/tmp/myoutput.txt') |
pdgcmd関数 ¶
メソッド ¶
addOutputFile(result_data, workitem_id=None, server_addr=None, result_data_tag="", subindex=-1, and_success=False, to_stdout=True, duration=0.0, hash_code=0)
ワークスクリプトがファイル(または複数ファイル)を生成する場合、この関数を使ってその結果(s)を報告することができます。
すると、これらのファイルがワークアイテム上のOutput
ファイルとして追加されます。
Note
以下の他の関数を使用すれば、同じようにアトリビュートを書き出すことができます。
result_data
出力ファイル名、または、出力ファイルパスのリスト。
workitem_id
この結果を生成したワークアイテムのID。 この引数を省略すると、この関数は環境変数を照会するようになります。
server_addr
報告先のResultサーバーのIPアドレスを含んだ文字列。 この引数を省略すると、この関数は環境変数を照会するようになります。
result_data_tag
出力ファイル(s)に使用するタイプタグ
文字列。例えば、"file/geo"
です。
and_success
これをTrue
にすると、この関数コールは、出力ファイルの設定だけでなく、ワークアイテムの状態も Success に設定します。
duration
and_success=True
に設定すると、ここには、ワークスクリプトの総実行時間(秒を示した浮動小数点値)を設定することができます。
これを設定しなかった場合、workItemStartCook
RPCからジョブ終了までの時間をPDGが自動的に計算するようになります。
addOutputFiles(output_file_array, workitem_id=None, server_addr=None, output_file_tag="", subindex=-1, to_stdout=True, hash_codes=[])
配列内のファイルのリストを1回の操作で書き出すバージョンのaddOutputFiles
で、大量の出力ファイルリストを効率良く処理することができます。
output_file_array
出力ファイルパスの配列。
workitem_id
ファイルを生成したワークアイテムのID。 この引数を省略すると、この関数は環境変数を照会するようになります。
server_addr
報告先のResultサーバーのIPアドレスを含んだ文字列。 この引数を省略すると、この関数は環境変数を照会するようになります。
output_file_tag
出力ファイル(s)に使用するタイプタグ
文字列または文字列配列。
例えば、"file/geo"
や["file/geo/render", "file/geo/collision"]
です。
reportResultData(result_data, workitem_id=None, server_addr=None, result_data_tag="", subindex=-1, and_success=False, to_stdout=True, duration=0.0, hash_code=0)
このメソッドは廃止されました。代わりにaddOutputFile
を使用してください。
delocalizePath(local_path)
→ str
Path Mapping
が無効な時(スケジューラUIでNone
に設定した時)、この関数は、指定されたパスを__PDG_DIR__
をルートにしたパスに変換します(非ローカル化)。
これには、PDG_DIR
環境変数が存在している必要があります。
local_path
非ローカル化したいローカルパス。
makeDirSafe(local_path)
→ str
ディレクトリが存在しなければ、ディレクトリを作成します。これは、同じディレクトリの作成が同時に起こらないように安全に行なわれます。
local_path
ディレクトリパス。
localizePath(deloc_path)
→ str
指定したパスをローカル化します。
Path Mapping
が無効な時、__PDG*
で始まるトークンの置換が行なわれます。
Path Mapping
が有効な時、このパスがローカルファイルシステムにマッピングされます。
さらに、環境変数も展開されます。
deloc_path
ローカル化するパス。
waitUntilReady(workitem_id, subindex, server_addr=None)
バッチサブアイテムがクックを開始できるようになるまでブロック(待機)します。
バッチワークアイテムが最初のフレームの準備が整った時
にクックを開始するように設定されていれば、指定したフレームでクックが完全に開始できるように、そのフレームで上流の依存関係すべてが完了したことをPDGに問い合わせて確認する必要があります。
workitem_id
バッチワークアイテムのID。
subindex
バッチワークアイテムのサブインデックス(バッチ内のワークアイテムのインデックス)。
server_addr
(オプション)host:port
の形式のPDG Resultサーバーアドレス。
getWorkItemJSON(workitem_id, subindex, server_addr=None)
→ str
指定したワークアイテムをシリアライズしたJSONを含んだ文字列を返します。
これを使用することで、指定したバッチサブアイテムのフルワークアイテムデータがjust-in-time
で取得されるので、フレームのクックを開始する前にそのバッチサブアイテムをHoudini内のアクティブワークアイテムとして設定することができます。
workitem_id
バッチワークアイテムのID。
subindex
バッチワークアイテムのサブインデックス(バッチ内のワークアイテムのインデックス)。
server_addr
(オプション)host:port
の形式のPDG Resultサーバーアドレス。
workItemSuccess(workitem_id, subindex=-1, server_addr=None, to_stdout=True)
指定したワークアイテムが成功したことを報告します。
Note
通常ではスケジューラが処理の戻りコードを見て失敗/成功を判断するので、ワークアイテムがこれを使用する必要は ありません 。
workitem_id
ワークアイテムの名前。
subindex
バッチワークアイテムのサブインデックス。 -1 は、そのワークアイテムがバッチサブアイテムで ない ことを意味します。
server_addr
(オプション)host:port
の形式のPDG Resultサーバーアドレス。
to_stdout
これがTrue
の時、RPCを実行するだけでなく、情報がstdout
にプリントされます。
workItemFailed(workitem_id, subindex=-1, server_addr=None, to_stdout=True)
指定したワークアイテムが失敗したことを報告します。
Note
通常ではスケジューラが処理の戻りコードを見て失敗/成功を判断するので、ワークアイテムがこれを使用する必要は ありません 。
workitem_id
ワークアイテムの名前。
subindex
バッチワークアイテムのサブインデックス。 -1 は、そのワークアイテムがバッチサブアイテムで ない ことを意味します。
server_addr
(オプション)host:port
の形式のPDG Resultサーバーアドレス。
to_stdout
これがTrue
の時、RPCを実行するだけでなく、情報がstdout
にプリントされます。
workItemStartCook(workitem_id, subindex=-1, server_addr=None, to_stdout=True)
指定したワークアイテムがクックを開始したことを報告します。
Note
通常ではLocal Scheduler
はそのワークアイテムがクックを開始したことを既に知っているわけで、そして、他のファームスケジューラは一般的にはジョブを呼び出す前にこのコールを作成するラッパースクリプトを持っているので、ワークアイテムがこれを使用する必要は ありません 。
workitem_id
ワークアイテムの名前。
subindex
バッチワークアイテムのサブインデックス。 -1 は、そのワークアイテムがバッチサブアイテムで ない ことを意味します。
server_addr
(オプション)host:port
の形式のPDG Resultサーバーアドレス。
to_stdout
これがTrue
の時、RPCを実行するだけでなく、情報がstdout
にプリントされます。
workItemAppendLog(log_data, log_type=3, workitem_id, subindex=-1, server_addr=None, to_stdout=True)
指定したログ文字列をワークアイテムの内部ログバッファに追加します。
log_data
ワークアイテムのログの最後に追加するテキストデータ。
log_type
ログのメッセージタイプ。デフォルトはpdg.workItemLogType.Rawです。
workitem_id
ワークアイテムの名前。
subindex
バッチワークアイテムのサブインデックス。 -1 はそのワークアイテムがバッチサブアイテム ではない ことを示します。
server_addr
(オプション)'host:port'
形式のPDG Resultサーバーアドレス。
to_stdout
これをTrue
に設定すると、情報がstdout
にプリントされ、RPCが実行されます。
workItemSetCustomState(custom_state, workitem_id, subindex=-1, server_addr=None, to_stdout=True)
指定したワークアイテムのカスタムステート文字列を設定します。
custom_state
ワークアイテムのカスタムステートとして設定する文字列。
workitem_id
ワークアイテムの名前。
subindex
バッチワークアイテムのサブインデックス。 -1 はそのワークアイテムがバッチサブアイテム ではない ことを示します。
server_addr
(オプション)'host:port'
形式のPDG Resultサーバーアドレス。
to_stdout
これをTrue
に設定すると、情報がstdout
にプリントされ、RPCが実行されます。
setStringAttribArray(attr_name, attr_value, workitem_id=None, subindex=-1, server_addr=None)
コールバックサーバーを介してPDG内のワークアイテムにアトリビュートデータを書き出します。
attr_name
作成または更新するアトリビュートの名前。
attr_value
文字列の配列。
workitem_id
(オプション)ワークアイテムの名前。
subindex
バッチワークアイテムのサブインデックス。 -1 は、そのワークアイテムがバッチサブアイテムで ない ことを意味します。
server_addr
(オプション)host:port
の形式のPDG Resultサーバーアドレス。
setIntAttribArray(attr_name, attr_value, workitem_id=None, subindex=-1, server_addr=None)
コールバックサーバーを介してPDG内のワークアイテムにアトリビュートデータを書き出します。
attr_name
作成または更新するアトリビュートの名前。
attr_value
数値の配列。
workitem_id
(オプション)ワークアイテムの名前。
subindex
バッチワークアイテムのサブインデックス。 -1 は、そのワークアイテムがバッチサブアイテムで ない ことを意味します。
server_addr
(オプション)host:port
の形式のPDG Resultサーバーアドレス。
setFloatAttribArray(attr_name, attr_value, workitem_id=None, subindex=-1, server_addr=None)
コールバックサーバーを介してPDG内のワークアイテムにアトリビュートデータを書き出します。
attr_name
作成または更新するアトリビュートの名前。
attr_value
数値の配列。
workitem_id
(オプション)ワークアイテムの名前。
subindex
バッチワークアイテムのサブインデックス。 -1 は、そのワークアイテムがバッチサブアイテムで ない ことを意味します。
server_addr
(オプション)host:port
の形式のPDG Resultサーバーアドレス。
setFileAttribArray(attr_name, attr_value, workitem_id=None, subindex=-1, server_addr=None)
コールバックサーバーを介してPDG内のワークアイテムにアトリビュートデータを書き出します。
attr_name
作成または更新するアトリビュートの名前。
attr_value
pdgjson.File
オブジェクトの配列。
workitem_id
(オプション)ワークアイテムの名前。
subindex
バッチワークアイテムのサブインデックス。 -1 は、そのワークアイテムがバッチサブアイテムで ない ことを意味します。
server_addr
(オプション)host:port
の形式のPDG Resultサーバーアドレス。
setPyObjectAttrib(attr_name, attr_value, workitem_id=None, subindex=-1, server_addr=None)
コールバックサーバーを介してPDG内のワークアイテムにアトリビュートデータを書き出します。
attr_value
にはシリアライズされたPythonオブジェクトを指定する必要があります。例えば、文字列に格納できるようにオブジェクトのrepr(..)
文字列を指定します。
独自のシリアライゼーションフォーマットを使用する場合、Houdiniセッションがアトリビュートデータのアンシリアライズをできるように、そのフォーマットをPDG_PYATTRIB_LOADER
変数を使用、または、pdg.TypeRegistry.pySerializationModule APIコールを介して定義されたモジュールに合わせる必要があります。
attr_name
作成または更新するアトリビュートの名前。
attr_value
文字列でシリアライズされたPythonオブジェクト。
デフォルトでは、eval()
を使ってアンシリアライズ可能なrepr()
が返すPythonオブジェクトを使用します。
しかし、[pdg.TypeRegistry#pySerializationModule]
を設定すれば、独自のフォーマットを使用することができます。
workitem_id
(オプション)ワークアイテムのID。
subindex
バッチワークアイテムのサブインデックス。 -1 は、そのワークアイテムがバッチサブアイテムで ない ことを意味します。
server_addr
(オプション)host:port
の形式のPDG Resultサーバーアドレス。
setStringAttrib(attr_name, attr_value, attr_index, workitem_id=None, subindex=-1, server_addr=None)
コールバックサーバーを介してPDG内のワークアイテムにアトリビュートデータを書き出します。
attr_name
作成または更新するアトリビュートの名前。
attr_value
文字列値。
attr_index
アトリビュートの値配列内の値のインデックス。
workitem_id
(オプション)ワークアイテムのID。
subindex
バッチワークアイテムのサブインデックス。 -1 は、そのワークアイテムがバッチサブアイテムで ない ことを意味します。
server_addr
(オプション)host:port
の形式のPDG Resultサーバーアドレス。
setIntAttrib(attr_name, attr_value, attr_index, workitem_id=None, subindex=-1, server_addr=None)
コールバックサーバーを介してPDG内のワークアイテムにアトリビュートデータを書き出します。
attr_name
作成または更新するアトリビュートの名前。
attr_value
数値。
attr_index
アトリビュートの値配列内の値のインデックス。
workitem_id
(オプション)ワークアイテムのID。
subindex
バッチワークアイテムのサブインデックス。 -1 は、そのワークアイテムがバッチサブアイテムで ない ことを意味します。
server_addr
(オプション)host:port
の形式のPDG Resultサーバーアドレス。
setFloatAttrib(attr_name, attr_value, attr_index, workitem_id=None, subindex=-1, server_addr=None)
コールバックサーバーを介してPDG内のワークアイテムにアトリビュートデータを書き出します。
attr_name
作成または更新するアトリビュートの名前。
attr_value
数値。
attr_index
アトリビュートの値配列内の値のインデックス。
workitem_id
(オプション)ワークアイテムのID。
subindex
バッチワークアイテムのサブインデックス。 -1 は、そのワークアイテムがバッチサブアイテムで ない ことを意味します。
server_addr
(オプション)host:port
の形式のPDG Resultサーバーアドレス。
setFileAttrib(attr_name, attr_value, attr_index, workitem_id=None, subindex=-1, server_addr=None)
コールバックサーバーを介してPDG内のワークアイテムにアトリビュートデータを書き出します。
attr_name
作成または更新するアトリビュートの名前。
attr_value
pdgjson.File
オブジェクト。
attr_index
アトリビュートの値配列内の値のインデックス。
workitem_id
(オプション)ワークアイテムのID。
subindex
バッチワークアイテムのサブインデックス。 -1 は、そのワークアイテムがバッチサブアイテムで ない ことを意味します。
server_addr
(オプション)host:port
の形式のPDG Resultサーバーアドレス。
invalidateCache(workitem_id=None, subindex=-1, server_addr=None)
ワークアイテムのキャッシュをPDGによって無効化するように要求します。 これによって、強制的に下流のタスクがクックされます。 出力ファイルをワークアイテムに追加することで、これと同じ効果を実施することができますが、このメソッドを使用することで、明示的にファイルを追加しなくてもキャッシュを無効化することができます。
workitem_id
(オプション)ワークアイテムのID。
subindex
バッチワークアイテムのサブインデックス。 -1 は、そのワークアイテムがバッチサブアイテムで ない ことを意味します。
server_addr
(オプション)host:port
の形式のPDG Resultサーバーアドレス。
warning(message, workitem_id=None, server_addr=None)
指定したワークアイテムのノードに警告メッセージを添付します。
message
表示する文字列メッセージ
workitem_id
(オプション)ワークアイテムのID。
server_addr
(オプション)host:port
の形式のPDG Resultサーバーアドレス。
reportServerStarted(servername, pid, host, port, proto_type, log_fname, workitem_id=None, server_addr=None)
このメソッドは廃止されました。共有サーバーはサービスブロックに置き換えられました。
共有サーバーが起動したことを報告します。 これは、サービスの代わりに共有サーバーを使用するように設定されたBlock Beginノード内のワークアイテムで使用します。
servername
サーバーの名前。
pid
サーバープロセスの数値的なプロセスID(PID)。
host
共有サーバーが起動されているマシンのホスト名。
port
共有サーバーがリッスンする数値的なポート番号。
proto_type
この共有サーバーに関連付けられているプロトコル。
log_fname
この共有サーバーが使用しているログファイルのパス。
workitem_id
(オプション)ワークアイテムのID。
server_addr
(オプション)host:port
の形式のPDG Resultサーバーアドレス。