Houdini 20.0 PDG/TOPsを使ってタスクを実行する方法

Job API

ジョブスクリプトで使用するPython API

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モジュール

挙動

pdgjson

PDGで利用可能なAPIと同様のハイレベルWorkItemAPIが用意されています。 役立つトップレベルのインポートは、pdg.WorkItempdg.Filepdg.attribTypepdg.attribFlagpdg.workItemTypepdg.workItemStateです。 pdgjson.WorkItem.fromJobEnvironment()をコールすることでWorkItemオブジェクトを取得することができます。

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')

pdgcmd

RPC関数コールを介してPDGと通信するローレベルAPIが用意されています。

from pdgcmd import addOutputFile

# ネットワークコールを介してデータをPDGワークアイテムに送り返します。
pdgcmd.setStringAttrib('runtime_attrib', 'test value', 0)
pdgcmd.addOutputFile('/tmp/myoutput.txt')

pdgcmd関数

メソッド

PDG/TOPsを使ってタスクを実行する方法

基本

初心者向けチュートリアル

次のステップ

リファレンス

  • すべてのTOPsノード

    TOPノードは、データをネットワークに送り込んでワークアイテムに変換し、色々なノードでそれを制御するワークフローを定義します。たいていのノードは、ローカルマシンまたはサーバーファーム上で実行可能な外部プロセスを表現しています。

  • プロセッサ系ノードコールバック

    プロセッサ系ノードはスケジューラで実行可能なワークアイテムを生成します。

  • パーティショナー系ノードコールバック

    パーティショナー系ノードは複数の上流ワークアイテムを単一パーティションにグループ化します。

  • スケジューラ系ノードコールバック

    スケジューラ系ノードはワークアイテムを実行します。

  • 独自のファイルタグとハンドラー

    PDGはファイルタグを使用して出力ファイルのタイプを決めます。

  • Python API

    ディペンデンシーグラフを扱うためのPython PDGパッケージのクラスと関数。

  • Job API

    ジョブスクリプトで使用するPython API

  • ユーティリティAPI

    Python pdgutilsパッケージのクラスと関数は、PDGノードでの使用だけでなく、スクリプトやプロセス外のジョブスクリプトでの使用も想定されています。