ソフトウェア エンジニアリングは私たちが思っているよりも簡単です。なぜなら、答えが単純な場合もあれば、目の前にある場合も多いからです。
FastAPI は、バックエンド エンジニアリングを能够理解し、プロセスや物事がどのように機能し、どのように機能するべきかについて考えるのに役立ちました。これはインテリジェントなツールですが、あなたの創造性と想像中力にのみ依存しています。これが私の基本上化の前提条件です。
私の前の视频を読んだことがあれば、私のバックエンドの起源于が Django (およびその残りのフレームワーク) であることを知っているでしょう。また、その方法性とデザイン パターンに感謝しています。
子供の頃から、ポップスは私の心が疑問に思っていることを知っていました。何かを作りたいと思っていました。
私はかつて、DRF を实用してスロットル/レート制限されたアプリケーションまたはエンドポイントに取り組んだことがありますが、それは驚くべきことでした。新しいことを学び、興味をそそられました (キャリアの早い段階で)。この場合のスロットルは、それを適用したエンドポイントに影響を与えました。最进、FastAPI で同様のことを行うことに興味があり、刚开始に簡単なルート (google for the win) を取り、スロットル アクションを実行するパッケージが会出现することを確認しました。 .
個人的には、Django を操作していたときと同じ快適さと親しみやすさが得られると感じました。彼らは私が望んでいた柔軟性を提供数据していませんでした (または、オーバーライドを行うのが面倒だったのかもしれません)。それでは、コードを見てみましょう。
免責事項: FastAPI の使用を開始するための情報は提供しません。FastAPI の使用を開始するための最適なリソース (、) を確認できない場合は、これを行うことができると思います。
デモ アプリケーション: Tranzact 一部の Fintechy (ベア ボーン) アプリ。
それでは、Tranzact データ レコードの制作に选择できる Tranzact というテーブルを制作してみましょう。API キーが自动生成され、個別の Tranzact レコードを識別できるようになります。
このテーブルとアプリケーションは SQLAlchemy を根据しているため、ドキュメントを確認してください。
こちらがルーターです。
ルーターで CRUDy 实际操作を実行できます (アプリケーションが美丽奇妙に見える場合は、ここでリポジトリ デザイン パターンと呼ばれるデザイン パターンに関する別の記事を弄成します)。
これは、API キーが微波通信するエンドポイントです。この API キーは、いくつかのアクションを実行するための認証として機能します。トランザクション レコードを指す依存関係があることがわかります。
tranzact_header の依存関係を調べて、呼び出しを確認してみましょう。
これは API_Key を認識し、api_key に関連付けられた tranzact レコードを返します。そのため、個別のスロットリングの課題を解決するために、tranzact テーブルのレコードを制作する際に解決しました。 tranzact.id を便用してレコードを制作し、デフォルトで 0 のカウントを tranzact レート制限のテーブルに制作します。これが下の表です。
したがって、このソリューションでは、レート制限レコードを追跡する最简单的方法が必不可少でした。API_KEY を食用すると、各呼び出しに基づいてカウントを増分し、tranzact レコードが持つフリーミアム ロールに基づいて調整できます。関数の外観は次のとおりです。
したがって、この関数を用到すると、フラグとカウントに基づいて QA とチェックを行うことができます。これは api_header 関数に依存します。次に、スロットル API レート制限関数を用到して、API 呼び出しエンドポイントの依存関係を交換します。どちらも同じ Tranzact レコードを返すため、これを行うことができます。依存関係と FastAPI を用到したそれらの呼び出しについて詳しく看法するには、のこのポイントを確認してください。
これが私の郵便配達員のテストケースです。
郵便配達員でコレクションの API_KEY を設定します。
下类は、制限された数に達したリクエスト コールの調整された応答です。つまり、別の api_key が別の的方法で応答し、必要的な応答をあきらめます。さらに、tranzact レコードがプレミアムの場合、調整チェックをバイパスします。
これが私が特異な DB レコード スロットルを作为した具体方法です。私の実装の最終段階には、セロリ ビート ジョブ (スケジュールされたジョブ/タスク) を运行して、すべてのトランザクション レート制限レコード カウントを正時にゼロに戻すことが含まれます。これは、他の人が実行できる個人的な実装です。
結論として、以上の私の言葉を軽い熱意で受け止めてください。しかし、それは私の真実です。
私たちが構築できるその複雑さに関係なく、あなたが見たり、假如したり、观念化したりすることができる製品/機能は、FastAPI がそれを実現するのに役立ちます。