Heroku で Fastapi サーバーを無料でホスト...


Fastapi プロジェクトを作成する



そのために、いくつかのpipパッケージをインストールします

pip install fastapi


本番用のASGIサーバーが必要です
ここでは uvicorn を使用します

pip install uvicron

gunicorn という名前の別のパッケージが必要です

pip install gunicorn


コードを書く



ここで、Python コード用のファイルを作成する必要があります. main.py という名前のファイルを作成し、次のようなコードを記述します

from fastapi import FastAPI

app = FastAPI()


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


@app.get("/items/{item_id}")
def read_item(item_id: int, q: Optional[str] = None):
    return {"item_id": item_id, "q": q}


コードを実行する




uvicorn main:app --reload


これにより、アプリが localhost で実行され、デフォルトのポートは 8000 になります.ここで、main はファイル名で、app は fastapi オブジェクトです.

次は、ホスティング用のいくつかのものを追加します.

requirements.txt を作成する



ファイルを作成するには、次を実行します.

pip freeze > requirements.txt


このようなファイルとコンテンツが作成されます

anyio==3.4.0
asgiref==3.4.1
certifi==2021.10.8
charset-normalizer==2.0.9
click==8.0.3
fastapi==0.70.1
gunicorn==20.1.0
h11==0.12.0
idna==3.3
pydantic==1.8.2
requests==2.26.0
sniffio==1.2.0
starlette==0.16.0
typing-extensions==4.0.1
urllib3==1.26.7
uvicorn==0.16.0


アプリを実行するために必要なパッケージのリストです.

プロファイルの作成



拡張子なしで Procfile という名前のファイルを作成し、以下のコードを貼り付けます

web: gunicorn -w 3 -k uvicorn.workers.UvicornWorker main:app


これには、アプリを実行するための実行スクリプトが含まれています
ここで main は python ファイル名で、app は fastapi オブジェクトです.変えられますので..

これで、アプリをデプロイする準備が整いました.

Github リポジトリを作成し、そこにコードをプッシュします
heroku ダッシュボードのそれぞれの github リポジトリにリンクされた新しい heroku アプリを作成します.

bulid が heroku で終了したら、your-app-url/docs に移動して、API ドキュメントを取得します.