Houdini 18.5 HQueue

Remote API package

ネットワーク上のHQueueサーバーに接続して関数をコールすることで、ジョブや他の情報を制御したり照会することができます。

On this page

概要

XML/RPCクライアントを介して(同じマシンから、または、ネットワーク上で)HQueueサーバーの関数をコールすることができます。このサーバーのAPIを使ってジョブを投入または照会することができます。

XML/RPCは、関数コールと戻り値をHTTPリクエスト/レスポンスに変換するための、言語に依存しな単純な規格です。 PythonにはビルトインのXML/RPCクライアントライブラリが入っているので、実際にそのプロトコルに関して何も知る必要がなく、単にリモートコールが可能な基本テクノロジーだと思って構いません。

HQueue クライアント に接続して関数をコールすることもできますが、このAPIだと非常に限られています

サーバーに接続する方法

Python3では、xmlrpc.clientライブラリを使ってサーバーに接続することができます(Python2では、これはxmlrpclibライブラリでした)。 他の言語でXML/RPCクライアントを利用可能ですが、このページではPythonに限定しています。

import xmlrpc.client

# HQueueサーバーに接続します。
hq = xmlrpc.client.ServerProxy("http://hq_server_hostname:5000")

戻り値のオブジェクトは、リモートAPIのプロキシとして作用します。 つまり、リモートのHQueueサーバー内の関数をコールするような感覚で、このオブジェクト上の関数アトリビュートをコールすることができます。 以下の利用可能な関数のリストを参照してください。

この接続が無効な場合、プロキシの関数をコールすると例外が発生します:

try:
    hq.ping()
except ConnectionRefusedError:
    print("HQueue server is not available")

(引き起こされる例外の種類に関しては、XML/RPCクライアントライブラリのドキュメントを確認してください。)

以下のサンプルは、プロキシオブジェクトの関数をコールする方法を示しています:

  • 新しいジョブを投入する:

    # Mantraを使ってIFDから画像をレンダリングするジョブを定義します。
    job_spec = {
        "name": "Render My Image",
        "shell": "bash",
        "command": (
            "cd $HQROOT/houdini_distros/hfs;"
            " source houdini_setup;"
            " mantra < $HQROOT/path/to/ifds/some_frame.ifd"
        )
    }
    
    job_ids = hq.newjob(job_spec)
    
  • newjob()が返したJob ID(s)をgetJob()で使用することで、ジョブの進捗を照会することができます:

    job = hq_server.getJob(job_ids[0], ["progress", "status"])
    status = job["status"]
    
    print("The job status is", status)
    if status in hq.getRunningJobStatusNames():
        print("{:.2f}% complete".format(job["progress"] * 100.0))
    

クライアントに接続する方法

HQueueクライアントはXML/RPC APIサーバーとしても作用します。 これによって、クライアントからサーバーに心拍を送信したり、クライアントを強制終了させる関数をコールすることができます。

import xmlrpc.client

# HQueueクライアントに接続します。
hq_client = xmlrpc.client.ServerProxy("http://hq_client_hostname:5001")

クライアントAPIには2つの関数があります:

wakeup()

クライアントがスリープ状態になっていて、その心拍をサーバーに送信させると、そのクライアンが目を覚まします。

terminate()

クライアントを強制終了させるように要求します。クライアントを強制終了させると、以下の結果になります:

  • そのクライアントで停止されているジョブがすべてキャンセルされます。

  • 新しいジョブがそのクライアントに割り当てられなくなります。

  • そのクライアントで現在実行されているジョブは、それが完了するまで実行が継続されます。

  • HQueueサーバーのクライアントリストから、そのクライアントが削除されます。

  • そのクライアント上のすべてのジョブの実行が終了すると、そのクライアントプロセスが終了します。

サーバーAPI

キュー

クライアント

クライアントグループ

ジョブ管理

ジョブ照会

メタ

リソース

詳細は、リソースを参照してください。

コンフィギュレーション

ノート

詳細は、ノートの使い方を参照してください。

廃止された関数

HQueue

はじめよう

  • HQueueについて

    HQueueは多目的なジョブ管理システムです。このシステムを利用することで、レンダリング、シミュレーション、他の処理をリモートクライアント上に分散させることができます。

  • インストール

    基本的なHQueueファームのセットアップ方法。

  • 設定

    HQueueサーバーとクライアントのオプションを設定する方法。

  • ジョブを投入する方法

    ファーム上にワークを配置する方法。

ファームの管理

  • クライアントの管理

    ウェブインターフェースまたはローカルログインを使って、クライアントマシンを追加/削除/再起動/管理する方法。

  • ジョブの管理

    ファーム上のジョブを閲覧/管理する方法。

  • クライアントグループの管理

    ウェブインターフェースまたはローカルログインを使って、クライアントマシンのグループを作成/管理する方法。

  • ノート

    各クライアントとジョブには、情報を記載したノートを添付することができます。

  • リソース

    各クライアントで利用可能なリソース(例えば、ライセンス)を指定することができるので、そのジョブを実行可能なクライアントに対してそのジョブのスケジュールを組むことができます。

  • ネットワークフォルダ

    Network Folder管理ページの使い方。

次のステップ

  • ログ

    HQueueサーバーはエラーとスケジュールイベントのログを別々に記録し、各クライアントもログを生成します。

  • アンインストールする方法

    HQueueサーバーまたはクライアントのソフトウェアをアンインストールする方法。

  • FAQs

    よくある質問の回答。

導師レベル

  • Remote API

    ネットワーク上のHQueueサーバーに接続して関数をコールすることで、ジョブや他の情報を制御したり照会することができます。

  • ジョブの仕様の詳細

    独自のジョブを投入したいユーザ向けに、ジョブの内部仕様に関する詳細を載せています。

  • MySQLに切り替える方法(Linuxのみ)

    LinuxではSQLiteの代わりにオプションでMySQLを使用するようにHQueueを設定することができます。