FastAPI の並行処理モデルを完全に理解する
FastAPI ではエンドポイントを作る際に同期関数 (def) と非同期関数 (async def) のどちらで書くこともできます。Python でのアプリケーション開発経験が浅い方はこの違いがわからずに最適ではない選択をしてしまうかもしれません。
このセッションでは「FastAPI の並行処理モデルを完全に理解する」をテーマに、Python の並行処理モデル・FastAPI の振る舞い・ケースごとの最適な選択と誤ったときに発生する問題・ASGI ミドルウェアの設定などについて述べます。
FastAPI は非常に便利なフレームワークですが、よくわからずに使うと思わぬ落とし穴にハマってしまうかもしれません。最高の Web アプリケーションを開発していくために、その特性をよく理解していきましょう。
大まかなアジェンダは以下の通りです。
- Python の並行処理方式の違い
- FastAPI での def と async def の動作の違い
- 同期/非同期のどちらか片方しか選択することができないケース
- その同期処理はスレッドセーフ?
- Uvicorn のワーカープロセス数とスレッド上限はどのように設定すべきか
このトピックに関するあなた自身の経験を教えてください
業務で Python 8年以上・FastAPI を3年以上使用してきました。受託ビジネスという背景もあり新規でアプリを構築した回数が多く、お客様ごとの要件や制約に合った設計を考えることが多かったです。また、若手メンバーに Python・FastAPI を教えるにあたって同期処理・非同期処理まわりの振る舞いを伝えるのが容易ではないという経験もあり、今回のトークを応募しました。
この発表を通じて、参加者とどんな議論が可能ですか?
ひとえに「FastAPI を使っている」と言っても、各社さまざまな用途や思想があり、設計方針なども異なっているかもしれません。「ウチではこういう考えのもとでこういう設計をしている」という知見を多くの参加者の方々と共有したいです。
hoto17296
ちゅらデータ株式会社 Webアプリケーションエンジニア