Python ノードは Python 3 構文をサポートしますが、Python 2 構文はサポートしません。Python ノードを使用して Python コードを実行し、ジョブを定期的にスケジューリングできます。このトピックでは、DataWorks で Python タスクを設定およびスケジューリングする方法について説明します。
前提条件
使用する RAM ユーザーがワークスペースに追加されていること。
RAM ユーザーを使用してタスクを開発する場合、RAM ユーザーをメンバーとしてワークスペースに追加し、[開発] ロールまたは [ワークスペース管理者] ロールを RAM ユーザーに割り当てる必要があります。 ワークスペース管理者ロールには、必要以上の権限があります。 ワークスペース管理者ロールを割り当てる場合は注意してください。 メンバーを追加してロールを割り当てる方法の詳細については、「ワークスペースメンバーを追加してロールを割り当てる」をご参照ください。
サーバーレス リソースグループがワークスペースに関連付けられていること。 詳細については、「サーバーレス リソースグループを使用する」ディレクトリのトピックをご参照ください。
開発を開始する前に Python ノードが作成されていること。詳細については、「スケジューリングワークフローのノードの作成」をご参照ください。
注意事項
サーバーレスリソースグループを使用してタスクを実行する場合、単一のタスクで最大
64 CUを使用できます。ただし、タスクの起動に影響するリソース不足を避けるため、16 CUを超えないようにしてください。Python ノードは基本的な Python ランタイム環境のみを提供します。Python コードでサードパーティパッケージが必要な場合は、カスタムイメージを作成し、イメージに依存関係をインストールしてから、そのイメージを使用して Python ノードを実行する必要があります。
ステップ 1: Python ノードの開発
Python ノードを開発します。
Python コードを編集します。
以下のコードは、バブルソートアルゴリズムの簡単な例を示しています。
def bubble_sort(arr): n = len(arr) # 外側のループは各パスを制御します。 for i in range(n): # 内側のループは隣接する要素の比較と交換を実行します。 for j in range(0, n-i-1): # 現在の要素が次の要素より大きい場合、それらを交換します。 if arr[j] > arr[j+1]: arr[j], arr[j+1] = arr[j+1], arr[j] return arr # コードをテストします。 if __name__ == "__main__": example_list = [64, 34, 25, 12, 22, 11, 90] sorted_list = bubble_sort(example_list) print("Sorted list:", sorted_list)
コードを開発した後、右側のパネルで [実行設定] をクリックします。リソースグループなどのテスト実行の設定を構成し、
Run ボタンをクリックしてコードをテストします。説明Python ノードのデバッグおよびスケジューリングは、サーバーレスリソースグループでのみ実行できます。現在のワークスペースにサーバーレスリソースグループが関連付けられていることを確認してください。詳細については、「サーバーレスリソースグループの使用」をご参照ください。
Python ノードスクリプトを開発およびテストした後、ノードのスケジューリングプロパティを設定して、ノードが定期的に実行されるようにします。
(オプション) スケジューリングパラメーターを設定します。
Python ノードは、コマンドライン引数としてスケジューリングパラメータを受け取ります。 スケジューリングパラメータ設定セクションでは、パラメータ値を順番に追加できます。 複数の値は スペース で区切ります。 コードでは、
sys.argv[1]、sys.argv[2]などを使用して、インデックスによってパラメータ値にアクセスします。説明PyODPS ノードとは異なり、Python ノードは
$var1のようにパラメーターを名前で直接参照できないため、sys.argvを使用して明示的に読み取る必要があります。スケジューリングパラメーターがコマンドライン引数として渡されるのは、ノードがコミットおよびデプロイされ、定期スケジュールやデータバックフィルなどのスケジューリングインスタンスによって実行された後のみです。これらのパラメーターは
sys.argvを使用して読み取ることができます。デバッグのために DataStudio でノードを直接実行する場合、スケジューリングパラメーターは渡されません。この場合、sys.argvにはスクリプトパスのみが含まれ、パラメーター値にアクセスすることはできません。
パラメーター定義の例
$[yyyymmdd] abcパラメーター使用の例
import sys # 受信したすべての引数を出力します。 print("Current received arguments:", sys.argv) # 最初と 2 番目のパラメーターを取得します。 param1 = sys.argv[1] param2 = sys.argv[2] print("Parameter 1:", param1) print("Parameter 2:", param2)
スケジューリングパラメーターの設定方法の詳細については、「スケジューリングパラメーターのソースと式」をご参照ください。
スケジューリング設定を完了したら、ノードを保存します。
ステップ 2: ノードのデプロイと保守
スケジューリングを設定した後、Python ノードをコミットして本番環境にデプロイできます。
デプロイ後、タスクはスケジューリング設定に基づいて定期的に実行されます。 に移動して、デプロイ済みの自動トリガータスクを表示および管理できます。詳細については、「運用保守の概要」をご参照ください。
個人開発環境でのタスクの開発
個人開発環境でも Python プログラミングをサポートしています。この環境を使用して Python ノードタスクを編集する方法については、「個人開発環境」をご参照ください。
関連付けられたロールを使用したノードの実行
RAM ロールを関連付けてノードを実行することで、特定の RAM ロールでノードタスクを実行し、詳細な権限制御とセキュリティ管理を実現できます。