9.8.2 トランザクション参加側としてのPythonアプリケーションの構成

PythonアプリケーションのフレームワークとしてFlaskまたはDjangoを選択できます。この項では、MicroTxライブラリを、Pythonアプリケーション(Flaskフレームワーク)のアプリケーション・コードと統合する手順について説明します。
  1. Pythonアプリケーション用に作成した仮想環境でターミナルを開いてから、次のコマンドを実行してPython用のMicroTxライブラリ・ファイル(installation_directory/otmm-<version>/lib/pythonフォルダ)をインストールします。
    pip3 install tmmpy-<version>.whl
  2. MicroTxライブラリのプロパティ値を構成します。新しいファイルを作成してtmm.propertiesとして保存します。次のプロパティに値を指定する必要があります。

    次の例では、プロパティのサンプル値を指定しています。ご自身の環境に基づいて値を指定してください。

    oracle.tmm.PropagateTraceHeaders = true
    server.port = 8080
    oracle.tmm.CallbackUrl = http://localhost:{server.port}

    各プロパティの詳細は、「ライブラリ・プロパティの構成」を参照してください。

    後で指定する必要があるため、このファイルの名前を書き留めてください。

  3. MicroTxのライブラリおよび例外をインポートします。tcclib.exceptionを使用して例外を処理できます。
    from tcclib.tcc import TCCClient, Middleware, http_request, TCCConfig
    import tcclib.exception as ex
  4. Flaskアプリケーションとミドルウェア・オブジェクトを作成します。
    次のサンプル・コードによって、appという名前のFlaskアプリケーションとミドルウェア・オブジェクトが作成されます。ミドルウェア・オブジェクトはFlaskアプリケーションをラップし、Flaskアプリケーションによって受信されるすべての受信リクエストをインターセプトします。
    # Create an instance of the Flask class with the name of the current module.
    app = Flask(__name__)
    # Create a middleware object to wrap around the Flask application that you have created.
    # The middleware object intercepts all the incoming requests received by the Flask application.
    app.wsgi_app = middleware(app.wsgi_app)
  5. 次のコードを追加して、マイクロサービスのtccConfigオブジェクトを初期化します。

    構文

    tccConfig = TCCConfig(filePath=<application_properties_file_path>, timeLimitInSeconds=<integer>)

    サンプル

    tccConfig = TCCConfig(filePath="./tmm.properties", timeLimitInSeconds=300)

    説明

    • ./tmm.propertiesは、トランザクション参加側サービスのMicroTxライブラリ・プロパティの値を定義したファイルの場所です。
    • 300は、トランザクション参加側サービスがリソースを予約する時間制限(秒)です。期間は整数で指定します。期限切れになった後でリソースを解放してTCCトランザクションのその部分を取り消すために必要なコードを用意するのは、アプリケーション開発者の責任です。業務要件に基づいて期限を決めてください。

    これらの値は、ご使用の環境に固有の値で置き換えてください。

  6. 前に作成したTCCConfigオブジェクトを使用して、参加側(予約済リソースURI)を既存のTCCトランザクションに登録します。これには、このリソースURIを使用してaddTccParticipantメソッドをコールします。
    const bookingUri;
    tccConfig.addTccParticipant(bookingUri);

    このコードが実行されると、イニシエータ・サービスが参加側サービスをコールしたときに、参加側サービスが既存のTCCトランザクションに参加します。また、MicroTxライブラリは、確定エンドポイントおよび取消しエンドポイントとして指定されたURIを使用して参加側サービスを登録します。

MicroTxライブラリを使用するサンプルPythonトランザクション参加側アプリケーションのソース・コードは、microtx-samples GitHubリポジトリにあるapp.pyファイルにあります。これは、MicroTxライブラリとアプリケーションの統合時に参照として使用できます。