Dùng async cho công việc đồng thời

Nhập môn FastAPI

Matt Eckerle

Software and Data Engineering Leader

Vì sao dùng async? Burger đồng thời!

Burger tuần tự

Khách xếp hàng chờ burger được làm và phục vụ lần lượt

Burger đồng thời

Khách xếp hàng khi burger được làm và phục vụ đồng thời

1 https://fastapi.tiangolo.com/async/
Nhập môn FastAPI

async trong thực tế

Burger tuần tự

Định nghĩa hàm lấy burger

# Đây không phải bất đồng bộ
def get_sequential_burgers(number: int):
    # Làm tuần tự
    return burgers

Gọi hàm theo cách tuần tự

burgers = get_burgers(2)

Burger đồng thời

Định nghĩa hàm lấy burger

async def get_burgers(number: int):
    # Làm bất đồng bộ
    return burgers

Gọi hàm theo cách bất đồng bộ

burgers = await get_burgers(2)
Nhập môn FastAPI

FastAPI với async

Nếu có thể:

results = await some_library()

Thì dùng async def:

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

Lưu ý Chỉ dùng await bên trong hàm tạo bằng async def

Nhập môn FastAPI

Khi nào dùng async

Khi nên dùng async

Khi ứng dụng phải chờ hệ thống khác phản hồi

  • API bên ngoài
  • Cơ sở dữ liệu

Ví dụ

  • Yêu cầu HTTP
  • Truy vấn cơ sở dữ liệu
  • Đọc tệp

Khi không nên dùng async

Tác vụ nặng CPU

Ví dụ

  • Xử lý âm thanh/hình ảnh
  • Thị giác máy tính
  • Machine Learning
  • Deep Learning

Khi không chắc chắn

Nhập môn FastAPI

Hãy thực hành!

Nhập môn FastAPI

Preparing Video For Download...