同時処理に async を使う

FastAPI入門

Matt Eckerle

Software and Data Engineering Leader

なぜ async か? 並行バーガー!

逐次バーガー

バーガーを順番に調理・提供し、客が一列に並ぶ様子

並行バーガー

バーガーを並行に調理・提供し、客が処理されていく様子

1 https://fastapi.tiangolo.com/async/
FastAPI入門

async の実践

逐次バーガー

バーガー取得関数の定義

# これは非同期ではありません
def get_sequential_burgers(number: int):
    # 逐次的に処理
    return burgers

関数を逐次呼び出し

burgers = get_burgers(2)

並行バーガー

バーガー取得関数の定義

async def get_burgers(number: int):
    # 非同期に処理
    return burgers

関数を非同期に呼び出し

burgers = await get_burgers(2)
FastAPI入門

FastAPI と async

可能なら:

results = await some_library()

では async def を使います:

@app.get('/')
async def read_results():
    results = await some_library()
    return results

awaitasync def で作成した関数内でのみ使用します

FastAPI入門

async を使う場面

async を使う

他システムの応答待ちが発生する場合

  • 外部 API
  • データベース

  • HTTP リクエスト
  • データベース照会
  • ファイル読み取り

async を使わない

CPU 集約タスク

  • 音声・画像処理
  • コンピュータビジョン
  • 機械学習
  • ディープラーニング

判断に迷う場合

FastAPI入門

Vamos praticar!

FastAPI入門

Preparing Video For Download...