Menggunakan async untuk kerja konkuren

Pengantar FastAPI

Matt Eckerle

Software and Data Engineering Leader

Mengapa pakai async? Burger konkuren!

Burger Sekuensial

Pelanggan mengantre untuk burger yang disiapkan dan disajikan secara serial

Burger Konkuren

Pelanggan mengantre untuk burger yang disiapkan dan disajikan secara konkuren

1 https://fastapi.tiangolo.com/async/
Pengantar FastAPI

async dalam praktik

Burger Sekuensial

Mendefinisikan fungsi untuk mengambil burger

# Ini tidak asynchronous
def get_sequential_burgers(number: int):
    # Lakukan proses sekuensial
    return burgers

Memanggil fungsi secara sekuensial

burgers = get_burgers(2)

Burger Konkuren

Mendefinisikan fungsi untuk mengambil burger

async def get_burgers(number: int):
    # Lakukan proses asynchronous
    return burgers

Memanggil fungsi secara asynchronous

burgers = await get_burgers(2)
Pengantar FastAPI

FastAPI dengan async

Jika memungkinkan:

results = await some_library()

Maka gunakan async def:

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

Catatan Gunakan await hanya di dalam fungsi yang dibuat dengan async def

Pengantar FastAPI

Kapan menggunakan async

Kapan pakai async

Jika aplikasi harus menunggu respons sistem lain

  • API eksternal
  • Basis data

Contoh

  • Permintaan HTTP
  • Query basis data
  • Membaca file

Jangan pakai async

Tugas berat CPU

Contoh

  • Pemrosesan audio/gambar
  • Computer vision
  • Machine Learning
  • Deep Learning

Jika tidak yakin

Pengantar FastAPI

Ayo berlatih!

Pengantar FastAPI

Preparing Video For Download...