はじめに
FastAPIの例外をPrettyErrorsで見やすく表示するfastapi-pretty-errorsを作成しました。
こういうエラーが...
こうなります。
PrettyErrorsとは
PrettyErrorsはPythonの例外を見やすく表示するライブラリです。
FastAPIでの利用についてはこちらのIssueで提案されていますが、
より簡単に導入できるように fastapi-pretty-errors
を作成しました。
インストール
pipでインストールします。
pip install fastapi-pretty-errors
Poetryを使っている場合は以下のように追加します。
poetry add fastapi-pretty-errors
使い方
FastAPIに PrettyErrorsMiddleware
をミドルウェアとして追加します。
from fastapi import FastAPI
from fastapi_pretty_errors import PrettyErrorsMiddleware
app = FastAPI()
app.add_middleware(PrettyErrorsMiddleware)
PrettyErrorsの設定を変更する場合は、以下のように引数を指定します。
設定可能なオプションについては、PrettyErrorsのドキュメントを参照してください。
app.add_middleware(
PrettyErrorsMiddleware,
# 以下に設定を追加
line_number_first=True,
lines_before=5,
lines_after=2,
# ...
)
例
PrettyErrorsMiddleware
をセットアップし、例外を発生させるエンドポイントを作成します。
main.py
from fastapi import FastAPI
from fastapi_pretty_errors import PrettyErrorsMiddleware
import pretty_errors
app = FastAPI()
app.add_middleware(
PrettyErrorsMiddleware,
line_number_first=True,
lines_before=5,
lines_after=2,
line_color=pretty_errors.RED + "> " + pretty_errors.default_config.line_color,
code_color=" " + pretty_errors.default_config.line_color,
truncate_code=True,
display_locals=True,
)
@app.get("/")
async def root():
raise ValueError("An error occurred")
FastAPIを起動して、エンドポイントにアクセスすると以下のようにフォーマットされたトレースバックが表示されます。
curl http://localhost:8000
{"detail":"Unexpected error occured."}
さいごに
PrettyErrorsをFastAPIで使いやすくした fastapi-pretty-errors
をご紹介しました。
ぜひ使ってみてください!