コンテンツにスキップ

Pex 内部の Gunicorn を使って WebAPI を起動する

Pex 内部の Gunicorn を使って WebAPI を起動する

pex 環境に gunicorn と WebAPI のコードをパッケージングした際に、WebAPI を起動する方法を調べたのでメモ。

次のようなディレクトリ構成で、main.py に WebAPI のコードがある場合を想定。 pex のエントリーポイントはgunicornにしておく。これを foo.pex とする。

この状態で./foo.pex a.b.c.main:appを実行すると、main.pyappが起動する。Pants でパッケージングする際に他のモジュールに依存すると、内部の dir 構成が変わることがあるので、pex ファイルを解凍して確認すると確実。

1
2
3
4
a/
└── b/
    └── c/
        └── main.py
1
2
3
4
5
6
7
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

config の利用

gunicron を使う際に-c {CONFIG_PATH}でコンフィグファイルを指定できる。pex 内部にこのファイルを置いても参照できないので、pex の外側に置いて参照する必要がある。