PyCon JP 2024

FastAPIのasync defとdefの使い分け
2024-09-27 , 20F Track1

FastAPIはPythonでREST APIを実装するときに使用するライブラリです。リクエスト・レスポンスのバリデーションや認証など様々な機能を備えており、便利なライブラリなので広く使われています。

そのFastAPIですが、パスオペレーションを定義するときに、async をつけることができます。昨今ChatGPTライクなストリームのようにChat表示できるアプリで使用されることもありますが、このasyncにはどのような効果があるのか、どのように使うのかは実は曖昧な人が多いのではないでしょうか。

いくつかのコードをサンプルにasyncを使う場合、使わない場合に分けて負荷試験などを見ながら違いについて発表します。


このセッションでは、async defはどのようなものかを簡単に説明し、使ったらよい場合と、使ってはいけない場合をそれぞれ説明します。
それぞれ、使った場合と使ってない場合にどのようなことになるか負荷試験結果などを見ながらasync defのベストプラクティスを学んでいきます

  1. Pythonにおける並行処理・並列処理・非同期処理
  2. マルチスレッドと非同期処理
    2.1. GILとは何か
    2.2 async/awaitの実装
  3. FastAPIにおけるasync defとdefの違い
    3.1 async def+同期処理を書いてはいけない
  4. async def+同期処理でどうなるのか実験してみる

Why did you choose this topic?

FastAPIは広く使用されていますが、世の中にある様々なサンプルでasync defの機能は何となく使われていることが多いように思えます。そのため、この発表で開発者が自分でasyncを正しく使用できることは重要だと考えたからです。

Knowledges and know-how the audience can get from your talk

FastAPIのasync defとはどのような機能か。
どのような場合に使用するべきか。

Prior knowledges speakers assume the audience to have

FastAPIの基礎知識

Audience experiment

Beginner

Language of presentation

日本語

Language of presentation material

日本語

Acroquest Technology株式会社所属。
NLP・検索を専門に、今はRAGソリューションの開発を担当。