HQueueではプログラミングでジョブをサブミットしたり、ファーム上のジョブを照会することが可能なPython APIがあります。APIを呼び出すには、HQueueに接続しなければなりません。以下にPythonのxmlrpclibモジュールを使用してサーバーへ接続する方法の例を載せます:

import xmlrpclib

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

上記のコードはHQueueサーバーを参照するプロキシを作成し、それをhq_server変数に格納しています。そのプロキシを使えば、以下のリストのメソッドを呼び出すことができます。

関数

スクリプトのサンプル

このサンプルでは、HQueueサーバーへの接続と接続の有効性をテストする方法を説明しています:

# -*- coding: utf-8 -*-
import xmlrpclib
hq_server = xmlrpclib.ServerProxy("http://localhost:5000")
try:
    hq_server.ping()
except:
    print "HQueue server is down."

このサンプルでは、新しいHQueueジョブのサブミットとその進捗状況を出力する方法を説明しています:

# -*- coding: utf-8 -*-
import time
import xmlrpclib

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

# 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"
}

# ジョブをサーバーにサブミットします。
# newjob()は、ジョブのIDをリストで返します(同時に複数のジョブを渡す場合)。
job_ids = hq_server.newjob(job_spec)

# 定期的にジョブの進捗状況とステータスをチェックします。
while True:
    # ジョブのステータスを取得します。
    job_details = hq_server.getJob(job_ids[0], ["progress", "status"])
    status = job_details["status"]

    # ジョブが終了したかチェックします。
    if status in ("succeeded", "failed", "cancelled", "abandoned"):
        break

    # ジョブが終了すると、その進捗状況を出力します。
    progress = job_details["progress"]
    print "Progress: %.2f" % (progress * 100)

# 最後のステータスを出力します。
print "Status: ", job_details["status"]

HQueueクライアントAPI

HQueueクライアントにはPython APIがあり、プログラムを使ってクライアントからサーバーに心拍を送信して、そのクライアントを強制終了させることができます。 APIをコールできるようにするには、HQueueクライアントに接続する必要があります。以下は、Pythonのxmlrpclibモジュールを使ってクライアントに接続する方法を説明したサンプルです:

# -*- coding: utf-8 -*-
import xmlrpclib

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

上記のコードは、HQueueクライアントのプロキシ参照を作成し、それをhq_client変数に格納しています。このプロキシを使って以下のメソッドをコールすることができます。

HQueue