0
0
Lập trình
Admin Team
Admin Teamtechmely

Giới thiệu fastapi-bgtasks-dashboard: Tích hợp dễ dàng cho FastAPI

Đăng vào 6 tháng trước

• 5 phút đọc

Giới thiệu fastapi-bgtasks-dashboard

FastAPI là một framework hàng đầu để xây dựng các API hiệu suất cao, được ưa chuộng bởi các tập đoàn công nghệ lớn, các công ty fintech và nền tảng thương mại điện tử nhờ vào khả năng bất đồng bộ và hiệu quả của nó.

Một trong những tính năng nổi bật của FastAPI là lớp BackgroundTasks, cho phép thực hiện các tác vụ "fire-and-forget" như gửi email, xử lý dữ liệu hoặc tích hợp API bên ngoài. Những tác vụ này sẽ chạy sau khi phản hồi, đảm bảo trải nghiệm người dùng không bị chậm lại.

Tuy nhiên, việc theo dõi các tác vụ này trở nên khó khăn nếu không có các log quá mức. Việc theo dõi log liên tục trở nên không thực tế khi quy mô tăng lên, dẫn đến các hệ thống không rõ ràng, nơi các tác vụ có thể thất bại một cách âm thầm, tiêu tốn nhiều tài nguyên hoặc làm tăng chi phí đám mây.

Để giải quyết vấn đề này, tôi đã phát triển fastapi-bgtasks-dashboard, một gói Python mã nguồn mở tích hợp một bảng điều khiển thời gian thực vào ứng dụng FastAPI của bạn với nỗ lực tối thiểu. Chỉ cần một dòng thay đổi trong ứng dụng của bạn, bạn có thể kích hoạt bảng điều khiển thời gian thực để theo dõi các tác vụ nền.

Cách tích hợp và thiết lập

Việc tích hợp bảng điều khiển rất đơn giản, chỉ cần một dòng mã sau khi cài đặt:

bash Copy
pip install fastapi-bgtasks-dashboard

Trong tập tin ứng dụng chính của bạn:

python Copy
from fastapi import FastAPI
from fastapi_bgtasks_dashboard import mount_bg_tasks_dashboard

app = FastAPI()

# Tích hợp bảng điều khiển một cách dễ dàng
mount_bg_tasks_dashboard(app=app)

Khởi động máy chủ của bạn (ví dụ: qua uvicorn main:app --reload), và truy cập vào http://localhost:8000/dashboard. Giao diện sẽ ngay lập tức hiển thị thông tin chi tiết về các tác vụ khi chúng đang thực hiện.

Trong phần lõi, gói này tận dụng tính năng tiêm phụ thuộc của FastAPI để ghi lại các tác vụ được thêm qua BackgroundTasks. Nó ghi lại các siêu dữ liệu cần thiết mà không làm thay đổi mã nguồn hiện có của bạn. Ví dụ, hãy xem một endpoint điển hình:

python Copy
from fastapi import BackgroundTasks, FastAPI

@app.post("/analyze")
async def analyze_data(background_tasks: BackgroundTasks, data: dict):
    background_tasks.add_task(heavy_computation, data)
    return {"status": "Đang xử lý"}

def heavy_computation(data: dict):
    # Giả lập xử lý nặng
    import time
    time.sleep(10)  # Thay thế bằng logic thực tế
    print(f"Dữ liệu đã được xử lý: {data}")

Khi kích hoạt endpoint này, tác vụ sẽ được xếp hàng và xuất hiện trong bảng điều khiển với các thuộc tính như thời gian bắt đầu, thời gian thực hiện (được định dạng trong ms/s/m/h), tham số, trạng thái và bất kỳ ngoại lệ nào.

Tính năng kỹ thuật

Bảng điều khiển đã được thiết kế cho các ứng dụng quy mô doanh nghiệp, với những tính năng mà nó cung cấp:

  • Giám sát Thời gian Thực: Sử dụng WebSockets để cập nhật trực tiếp, đảm bảo khả năng thấy ngay lập tức tiến trình tác vụ mà không cần tải lại trang. Điều này được xây dựng trên hạ tầng bất đồng bộ của Starlette, hoàn toàn phù hợp với hệ sinh thái của FastAPI.

  • Điều khiển Tương tác: Sắp xếp và lọc các tác vụ theo tên hàm, trạng thái hoặc thời gian thực hiện. Thực hiện lại các tác vụ thất bại chỉ với một cú nhấp chuột, giữ nguyên tham số ban đầu.

  • Lưu trữ Hiệu quả: Mặc định sử dụng một từ điển an toàn với nhiều luồng trong bộ nhớ, tối ưu cho việc xử lý hàng triệu tác vụ trên phần cứng khiêm tốn (1-2 GB RAM là đủ, với kích thước siêu dữ liệu chỉ trong vài MB). Tính năng "xóa tác vụ" cho phép xóa thủ công để ngăn ngừa tình trạng tràn bộ nhớ, lý tưởng cho các dịch vụ lâu dài.

Nếu không có công cụ như vậy, các ứng dụng có nguy cơ gặp phải các vấn đề không được phát hiện - các tác vụ có thể bị deadlock, rò rỉ bộ nhớ hoặc vi phạm SLA trong các môi trường phân tán như cụm Kubernetes.

Lộ trình Phát triển Tương lai

Phiên bản 0.1.5 đại diện cho một bản phát hành ổn định, với tất cả các vấn đề đã biết được giải quyết. Nó tập trung vào chức năng cốt lõi mà không có các phụ thuộc bên ngoài.

Các phiên bản tương lai sẽ giới thiệu các tùy chọn lưu trữ lâu dài, nhắm đến Redis cho việc caching trong các hệ thống phân tán và PostgreSQL cho việc truy vấn mạnh mẽ và lưu trữ lịch sử.

Tại sao nên áp dụng công cụ này?

Đối với các nhóm quản lý các hệ thống FastAPI quan trọng như phân tích thời gian thực hoặc cổng thanh toán - bảng điều khiển này giúp giảm thiểu các điểm mù, giảm thiểu chi phí gỡ lỗi và tối ưu hóa việc sử dụng tài nguyên. Nó ngăn ngừa các sự cố sản xuất và giảm chi phí đám mây không cần thiết, tạo ra các kiến trúc đáng tin cậy và có thể mở rộng.

Khám phá tài liệu đầy đủ trên PyPI hoặc repository GitHub. Tôi khuyến khích bạn đánh dấu repo để hỗ trợ sự hiện diện và đóng góp qua các yêu cầu kéo - cho dù là nâng cao các tích hợp, thêm số liệu (ví dụ: Prometheus) hoặc tinh chỉnh UI.

Tầm nhìn của tôi là tích hợp điều này vào hệ sinh thái chính thức của FastAPI và cải thiện cách xử lý tác vụ nền trên toàn ngành. Hãy cùng hợp tác để làm cho các ứng dụng FastAPI trở nên bền vững và dễ quan sát hơn. Phản hồi và kinh nghiệm của bạn về những thách thức với các tác vụ nền rất được hoan nghênh trong phần bình luận!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào