paint-brush
Cách kiến trúc các điều tiết riêng lẻ cho người dùng và bảng trong FastAPItừ tác giả@kaizenthecreator
2,186 lượt đọc
2,186 lượt đọc

Cách kiến trúc các điều tiết riêng lẻ cho người dùng và bảng trong FastAPI

từ tác giả Philip Ireoluwa Okiokio4m2023/02/07
Read on Terminal Reader

dài quá đọc không nổi

FastAPI: Kiến trúc điều tiết cá nhân cho người dùng và bảng. Đây là tiền đề của sự khái quát hóa của tôi. Nếu bạn đã đọc bất kỳ tác phẩm nào trước đây của tôi, bạn sẽ biết nguồn gốc phụ trợ của tôi là Django (và khung còn lại của nó). Tôi rất biết ơn về hướng và các mẫu thiết kế của nó, chúng đã cho phép tôi sửa đổi bánh xe cho phù hợp với trường hợp sử dụng của mình.
featured image - Cách kiến trúc các điều tiết riêng lẻ cho người dùng và bảng trong FastAPI
Philip Ireoluwa Okiokio HackerNoon profile picture
0-item


Công nghệ phần mềm dễ dàng hơn chúng ta nghĩ bởi vì đôi khi câu trả lời rất đơn giản và nhiều lần ngay trước mắt chúng ta.


FastAPI là công cụ giúp tôi hiểu về kỹ thuật phụ trợ và tư duy về các quy trình cũng như cách mọi thứ có thể và nên hoạt động. Nó là một công cụ thông minh, tuy nhiên, nó hoàn toàn phụ thuộc vào óc sáng tạo và con mắt tưởng tượng của bạn. Đây là tiền đề của sự khái quát hóa của tôi.


Nếu bạn đã đọc bất kỳ tác phẩm nào trước đây của tôi, bạn sẽ biết nguồn gốc phụ trợ của tôi là Django (và khung còn lại của nó), và tôi rất biết ơn về hướng và các mẫu thiết kế của nó, chúng đã cho phép tôi sửa đổi bánh xe cho phù hợp với trường hợp sử dụng của mình.


Khi lớn lên, những người bố của tôi biết rằng tâm trí tôi luôn thắc mắc và tôi muốn tạo ra những thứ và những người bố của tôi luôn nói với tôi rằng bạn không thể phát minh lại bánh xe, hãy sửa đổi nó.


Tôi đã từng làm việc trên một ứng dụng hoặc điểm cuối được điều chỉnh/giới hạn tốc độ với DRF và điều đó thật tuyệt vời, tôi đã học được điều gì đó mới và tôi đã bị thu hút (khi mới vào nghề). Van tiết lưu trong trường hợp này ảnh hưởng đến các điểm cuối mà tôi đã áp dụng nó, gần đây tôi quan tâm đến việc làm điều gì đó tương tự trong FastAPI và lần đầu tiên tôi chọn con đường dễ dàng (google để giành chiến thắng) và thấy rằng có các gói tồn tại thực hiện hành động van tiết lưu .


Cá nhân tôi cảm thấy chúng mang lại sự thoải mái và quen thuộc giống như khi tôi sử dụng Django. Họ không cung cấp sự linh hoạt mà tôi muốn (hoặc có thể tôi lười thực hiện một số thao tác ghi đè), vì vậy sau đó tôi đã ngồi và thiết kế một giải pháp. Vì vậy, hãy nhìn vào mã.


Tuyên bố miễn trừ trách nhiệm: Tôi sẽ không cung cấp thông tin về cách bắt đầu với FastAPI và làm nhiều việc để tăng tốc. Tôi cho rằng bạn có thể làm điều này, nếu bạn không thể kiểm tra các tài nguyên tốt nhất để bắt đầu với FastAPI ( Hướng dẫn bằng , Hướng dẫn về tài liệu )

Ứng dụng demo: Tranzact một số ứng dụng Fintechy (xương trần).

Nhiều bộ phận chuyển động được giữ bởi một điểm vào máy chủ.


Vì vậy, hãy tạo một bảng có tên là Tranzact có thể được sử dụng để tạo các bản ghi dữ liệu Tranzact và một Khóa API sẽ được tạo để có thể xác định các bản ghi Tranzact riêng biệt.


Bảng và ứng dụng này tận dụng SQLAlchemy, vì vậy hãy xem tài liệu.


bảng tranzact, lý tưởng nhất là nằm trong tệp models.py.


Đây là Bộ định tuyến.

Bộ định tuyến API nơi định tuyến cho cuộc sống tranzact. Lý tưởng nhất là nằm trong tệp router.py của bạn.


Chúng ta có thể Thực hiện các thao tác CRUDy trong bộ định tuyến, (Nếu ứng dụng có vẻ lạ, tôi sẽ tạo một bài đăng khác về mẫu thiết kế ở đây có tên là Mẫu thiết kế kho lưu trữ).


Đây là điểm cuối mà Khóa API nói đến, khóa API này đóng vai trò xác thực để thực hiện một số hành động. Những gì chúng ta có thể thấy là có một sự phụ thuộc trỏ đến một bản ghi giao dịch.


một tuyến đường yêu cầu khóa API để liên lạc.


Hãy kiểm tra sự phụ thuộc của tranzact_header và kiểm tra các cuộc gọi.

một chức năng kiểm tra Khóa API được gửi dưới dạng Tiêu đề yêu cầu và trả về một bản ghi tranzact duy nhất.


Điều này nhận ra API_Key và trả về bản ghi tranzact được liên kết với api_key.

Vì vậy, để giải quyết thách thức của việc điều chỉnh được cá nhân hóa, tôi đã giải quyết vấn đề đó trong khi tạo một bản ghi cho bảng tranzact. Tôi tạo một bản ghi với tranzact.id và một số đếm với giá trị mặc định là 0 trong bảng giới hạn tốc độ tranzact. Đây là bảng dưới đây.



một đoạn của bảng Giới hạn tỷ lệ và các mô hình tranzact.


Vì vậy, với giải pháp này, tôi cần một cách để theo dõi bản ghi giới hạn tốc độ, với API_KEY, chúng tôi có thể tăng dần số lượng dựa trên mỗi cuộc gọi và điều tiết dựa trên vai trò freemium mà bản ghi tranzact có. Đây là chức năng trông như thế nào.



Vì vậy, với chức năng này, chúng tôi có thể thực hiện một số QA và kiểm tra dựa trên cờ và với số lượng. Điều này phụ thuộc vào chức năng api_header. Sau đó, chúng tôi hoán đổi phần phụ thuộc trong các điểm cuối lệnh gọi API bằng chức năng giới hạn tốc độ API điều tiết. Chúng tôi có thể làm điều đó bởi vì cả hai đều trả về cùng một bản ghi Tranzact. Để hiểu thêm về các thành phần phụ thuộc và lệnh gọi của chúng với FastAPI, hãy xem điểm này của tài liệu .


Đây là một trường hợp thử nghiệm trong người đưa thư của tôi.


Thiết lập API_KEY cho bộ sưu tập của tôi trong postman.

Đặt Khóa API ý tưởng trong người đưa thư ở cấp bộ sưu tập.


Dưới đây là phản hồi được điều chỉnh cho một lệnh gọi yêu cầu đã đạt đến số giới hạn, nghĩa là một api_key khác sẽ phản hồi theo cách khác từ bỏ phản hồi mong muốn, cộng với nếu bản ghi tranzact là cao cấp thì nó sẽ vượt qua kiểm tra điều tiết.


phản hồi API được điều chỉnh cho các lệnh gọi API.


Vì vậy, đây là cách tôi tạo bộ điều chỉnh bản ghi DB đơn lẻ, giai đoạn kết thúc quá trình triển khai của tôi bao gồm sử dụng công việc nhịp cần tây (công việc/nhiệm vụ đã lên lịch) để hoàn nguyên tất cả số lượng bản ghi giới hạn tốc độ tranzact về 0 trên giờ. Đây là một thực hiện cá nhân những người khác có thể được thực hiện.


Tóm lại, hãy nghe những lời của tôi dưới đây với một trái tim nóng nhẹ nhưng đó là sự thật của tôi.


Chúng tôi có thể xây dựng bất kỳ sản phẩm/tính năng nào mà bạn có thể nhìn thấy, tưởng tượng hoặc lên ý tưởng bất kể mức độ phức tạp của nó. Khi chúng tôi có thể nhìn thấy nó, FastAPI có thể giúp chúng tôi đưa sản phẩm/tính năng đó vào cuộc sống.


Cũng được xuất bản ở đây.