Houdini 18.5 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.addResultData('/tmp/myoutput.txt')

pdgcmd

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

from pdgcmd import reportResultData

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

pdgcmd関数

メソッド

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

基本

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

次のステップ

リファレンス