- vừa được xem lúc

Vì sao chọn FastAPI

0 0 44

Người đăng: Đào Hải Long

Theo Viblo Asia

Introduction

Gần đây, do nhu cầu phát triển theo mô hình microservice ngày càng phổ biến, mình chủ yếu code mảng Python - Backend nên được phép chọn một framework để phát triển project mới cho công ty, sau khi cân nhắc giữa 3 framework phổ biến hiện tại sử dụng Python là Django, Flask và FastAPI, mình quyết định chọn FastAPI để phát triển project, dưới đây là lý do cho việc này.

Main Reason

FastAPI là một micro framework khá mới, chỉ vừa được release năm 2018. Github của framework này hiện tính đến tháng 1/2021 đang đạt 25,4k star, tuy nhiên do được áp dụng khá nhiều công nghệ mới nên có FastAPI có vài điểm mạnh mà mình cảm thấy khá phù hợp để sử dụng phát triển project:

  • High performance Do được base trên 2 lib khá mạnh ở thời điểm hiện tại của python là Pydantic và Starlette nên FastAPI sở hữu hiệu suất cao nhất trong tất cả các framework Python hiện nay, bạn có thể tham khảo so sánh hiệu năng giữa các framework tại https://www.techempower.com/
  • Development Speed Được hỗ trợ tích hợp sẵn giao diện Swagger – OpenAPI kèm theo cách code khá đơn giản nên lập trình có thể release function rất nhanh mà vẫn có document đầy đủ, đây là lợi thế có thể nói là quan trọng nhất của FastAPI so với các Framework khác. Dưới đây là một đoạn code in ra dòng text healthcheck
import uvicorn
from fastapi import FastAPI
from pydantic import BaseModel class ResponseSchemaBase(BaseModel): code: str = '00' message: str = '' app = FastAPI() @app.post("/health-check", response_model=ResponseSchemaBase)
async def health_check(): return {"message": "Health check success"} if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=8000)
  • Bất đồng bộ Hiện tại bất đồng bộ đã được hỗ trợ từ phiên bản Django 3.x nhưng ngay từ khi release, FastAPI mặc định đã hỗ trợ developer Async, cũng vì vậy mà FastAPI chỉ có thể sử dụng với python3.6 trở lên

Compare Django, Flask and FastAPI

Dưới đây là bảng so sánh giữa 3 Framework Django, Flask và FastAPI dựa trên những kinh nghiệm của bản thân mình trong việc trải nghiệm cả 3 framework

Django Flask FastAPI
Community Cộng đồng của Django hiện tại khá lớn và lâu đời, vì vậy số lượng lib hỗ trợ cho Django có thể nói là nhiều nhất ở thời điểm hiện tại Cộng đồng của Flask hiện tại cũng lớn nhưng không bằng Django, bởi vậy số lượng lib cũng hạn chế hơn Django Cộng đồng của FastAPI là khá mới, do vậy số lượng lib hỗ trợ khá ít
Python version All version: 2x, 3x All version: 2x, 3x Only python3.x
Performance Do hỗ trợ nhiều feature nên perfomance của Django không được cao Performance khá cao Là framework có hiệu năng cao nhất trong các framework python hiện tại
ORM Django ORM Flask-sqlachemy Sqlachemy
Async Hỗ trợ từ Django 3.x Chưa hỗ trợ Tương thích hoàn toàn
Builtin Admin UI Không Không
Project Frame Có, chỉ cần run python manage startapp yourapp Không Không
Python shell Không – đây là hạn chế của một microframework so với các framework thực thụ
OpenAPI document Phổ biến nhất là sử dụng Django-rest-framework, với Swagger thì dùng django-rest-swagger với python2.x, dùng drf-yasg với python3.x Sử dụng Flask-restplus Mặc định đã tích hợp sẵn Swagger và Redocs

Bình luận

Bài viết tương tự

- vừa được xem lúc

Hiệp phương sai và hệ số tương quan tuyến tính trong Python

Giới thiệu. Làm việc với các biến trong phân tích dữ liệu luôn đặt ra câu hỏi: Các biến phụ thuộc, liên kết và thay đổi với nhau như thế nào? Các biện pháp hiệp phương sai và hệ số tương quan tuyến tính giúp thiết lập điều này.

0 0 68

- vừa được xem lúc

Không gian tên(namspace) và phạm vi(scope) trong Python

. Khi mình ngồi học và dịch bài "Class trong Python" cho sê-ri "Khám Phá Đại Bản Doanh Python", mình đã đụng hai bạn này, và các bạn thật là trừu tượng và khó gặm. Thế là mình tìm kiếm và viết bài này để hiểu rõ hơn về hai bạn ấy, hi vọng bạn đọc thêm để hiểu về Python nhé.

0 0 49

- vừa được xem lúc

Tản mạn một chút về kỹ thuật Streaming

Lời mở đầu. Hôm nay trong lúc rảnh rỗi tôi ngồi tìm hiểu kỹ thuật streaming và áp dụng nó bằng Python. Bài viết có thể có thiếu sót mong các bạn thông cảm. Stream là một kỹ thuật chuyển dữ liệu theo dòng ổn định và liên tục.

0 0 74

- vừa được xem lúc

Introduction to Google Cloud AutoML Vision

With the rapid development of technology, a Data Scientist could achieve their job like training ML models faster. The Word "AutoML"(also known as Automated machine learning) comes and now plays a cru

0 0 83

- vừa được xem lúc

Telegram Bot - Cào Dữ Liệu Từ VnExpress Bằng Python

Chào mọi người, sau bao ngày với các bài viết về lỗi bảo mật thì hôm nay mình sẽ đổi gió tí nhỉ :v. Vì thế nên hôm nay mình sẽ hướng dẫn mọi người làm 1 con bot Telegram bằng Python nhé.

1 0 223

- vừa được xem lúc

Iterable, Iterator và Generator trong Python

Chào cả nhà ! Chào BeautyOnCode . Just for vui tí, thực ra đó là cách gia đình mình chào nhau dạo gần đây lol.

0 0 27