記事
· 2025年2月20日 4m read

WSGI サポートの概要

wsgi_logo

コンテキスト

ウェブサーバーゲートウェイインターフェース(WSGI)は、ウェブサーバーがリクエストを Python プログラミング言語で記述されたウェブアプリケーションまたはフレームワークに転送するための単純な呼び出し規則です。 WSGI は PEP 3333 で詳しく説明された Python 規格です。

🤔 定義は良いとして、IRIS との関連性は何でしょうか?

IRIS 2024.2+ の新機能により、直接 IRIS で WSGI アプリケーションを実行できます。 この機能は、IRIS を他の Python フレームワークとライブラリに統合する優れた方法です。

これは、Python を使用して IRIS と対話できる Python ファーストエクスペリエンスのトレンドに沿ったもので、Python アプリケーションを IRIS 上で直接実行することもできるようになりました。

使用方法

IRIS で WSGI アプリケーションをインスタンス化するには、IRIS 管理ポータルのセキュリティ -> アプリケーション -> ウェブアプリケーションのセクションで構成する必要があります。

単純な Flask の例:

/irisdev/app/community ディレクトリにある app.py というファイル:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

UI 構成

画像

このセクションでは、以下を指定することで WSGI アプリケーションを構成できます。

  • アプリケーション名

    • これは WSGI アプリケーションのファイル名に対応します
    • 例: app.py ですが、.py 拡張子を除きます : app
  • コーラブル名

    • WSGI サーバーによって呼び出されるコーラブル関数
    • 例: app は、app.py ファイルの app 変数に対応します

    • app = Flask(__name__)

  • WSGI アプリディレクトリ
    • WSGI アプリケーションが存在するパス
    • 例: /irisdev/app/community
  • Python プロトコルタイプ
    • wsgi またh asgi
    • wsgi はデフォルト値で、この例で使用されているタイプです
    • asgi は非同期アプリケーションに使用します
      • asgi は現時点では a2wsgi アダプターによって同期的にサポートされています
  • デバッグ
    • オンの場合、WSGI アプリケーションはデバッグモードで実行します
    • WSGI アプリケーションへの変更は自動的に再読み込みされるため、開発目的において便利です

CPF マージ

CPF を使用して WSGI アプリケーションを構成することも可能です。 構成の例を以下に示します。

[Actions]
CreateApplication:Name=/flask,NameSpace=IRISAPP,WSGIAppLocation=/irisdev/app/community/,WSGIAppName=app,WSGICallable=app,Type=2,DispatchClass=%SYS.Python.WSGI,MatchRoles=:%ALL,WSGIDebug=0,WSGIType=0

ログファイル

WSGI アプリケーションログは、インスタンスの mgr ディレクトリにある WSGI.log ファイルに保存されます。

以下は、IRIS で実行できる WSGI アプリケーションの例です。IRIS で様々な Python フレームワークを実行する方法を示すことを目的としています。

基本的に、ユースケースはすべてのフレームワークで同一です。

エンドポイント

  • /iris - IRISAPP ネームスペースに存在する上位 10 個のクラスを持つ JSON オブジェクトを返します。
  • /interop - IRIS の相互運用性フレームワークをテストするための ping エンドポイント。
  • /posts - Post オブジェクトの単純な CRUD エンドポイント。
  • /comments - Comment オブジェクトの単純な CRUD エンドポイント。

オブジェクトモデル

Post オブジェクト:

  • id
  • title
  • content

Comment オブジェクト:

  • id
  • post_id(Post の外部キー)
  • content

Flask

Django

FastAPI

制限

  • ASGI は現時点では a2wsgi アダプターによって同期的にサポートされています。
  • tornado アプリケーション(jupyter、streamlit など )は、WSGI に対応していないためサポートされていません。
ディスカッション (0)1
続けるにはログインするか新規登録を行ってください