This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.6.7. Python 関数の開発
NodeJS を使用した OpenShift Serverless Functions は、テクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
Python 関数プロジェクトを作成 したら、指定したテンプレートファイルを変更して、ビジネスロジックを機能に追加できます。これには、関数呼び出しと返されるヘッダーとステータスコードの設定が含まれます。
6.7.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- 関数を開発する前に、OpenShift Serverless 機能の設定の手順を実行する必要があります。
6.7.2. Python 関数テンプレート構造 リンクのコピーリンクがクリップボードにコピーされました!
Knative (kn) CLI を使用して Python 機能を作成する場合の、プロジェクトディレクトリーは通常の Python プロジェクトに似ています。Python 関数にはいくつかの制限があります。プロジェクトの要件として唯一、main() 関数と func.yaml 設定ファイルで設定される func.py が含まれることが挙げられます。
開発者は、テンプレート requirements.txt ファイルにある依存関係しか使用できないわけではありません。その他の依存関係は、他の Python プロジェクトに配置されるように追加できます。デプロイメント用にプロジェクトをビルドすると、これらの依存関係は作成したランタイムコンテナーイメージに含まれます。
http および event トリガー関数のテンプレート構造はいずれも同じです。
テンプレート構造
fn ├── func.py ├── func.yaml ├── requirements.txt └── test_func.py
fn
├── func.py
├── func.yaml
├── requirements.txt
└── test_func.py
6.7.3. Python 関数の呼び出しについて リンクのコピーリンクがクリップボードにコピーされました!
Python 関数は、単純な HTTP 要求で呼び出すことができます。受信要求を受け取ると、関数は context オブジェクトで最初のパラメーターとして呼び出されます。
context オブジェクトは、2 つの属性を持つ Python クラスです。
-
request属性。この属性常に存在し、Flaskrequestオブジェクトが含まれます。 -
2 番目の属性
cloud_event。受信した要求がCloudEventオブジェクトの場合に設定されます。
開発者はコンテキストオブジェクトから CloudEvent データすべてにアクセスできます。
コンテキストオブジェクトの例
6.7.4. Python 関数の戻り値 リンクのコピーリンクがクリップボードにコピーされました!
関数は、Flask でサポートされている任意の値を返すことができます。これは、呼び出しフレームワークがこれらの値を Flask サーバーに直接プロキシーするためです。
例
def main(context: Context):
body = { "message": "Howdy!" }
headers = { "content-type": "application/json" }
return body, 200, headers
def main(context: Context):
body = { "message": "Howdy!" }
headers = { "content-type": "application/json" }
return body, 200, headers
関数は、関数呼び出しの 2 番目および 3 番目の応答値として、ヘッダーと応答コードの両方を設定できます。
6.7.4.1. Returning CloudEvents リンクのコピーリンクがクリップボードにコピーされました!
開発者は @event デコレーターを使用して、呼び出し元に対して、応答を送信する前に関数の戻り値を CloudEvent に変換する必要があることを指示できます。
例
この例では、タイプが "my.type"、ソースが "/my/function" の応答値として CloudEvent を送信します。CloudEvent data プロパティー は、返された data 変数に設定されます。event_source および event_type デコレーター属性は任意です。
6.7.5. Python 関数のテスト リンクのコピーリンクがクリップボードにコピーされました!
Python 機能は、お使いのコンピューターのローカルにテストできます。デフォルトプロジェクトには、test_func.py ファイルが含まれており、関数の単純なユニットテストを提供します。
Python 関数のデフォルトのテストフレームワークは unittest です。必要に応じて、別のテストフレームワークを使用できます。
前提条件
Python 関数テストをローカルで実行するには、必要な依存関係をインストールする必要があります。
pip install -r requirements.txt
$ pip install -r requirements.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow
手順
-
test_func.pyファイルが含まれる関数のフォルダーに移動します。 テストを実行します。
python3 test_func.py
$ python3 test_func.pyCopy to Clipboard Copied! Toggle word wrap Toggle overflow