レートリミッターの実装
感情分析APIを構築しています。このAPIでは、ユーザーがテキストの感情を分析できます。悪用を防ぐために、APIキーごとに1分間あたり 5 リクエストまで許可するレート制限を実装する必要があります。RateLimiter クラスはすでに作成されています。RateLimiter クラス内に is_rate_limited メソッドを追加して、1分間のタイムウィンドウ内に行われたリクエスト数を確認できるようにしましょう。
datetime ライブラリから datetime クラスと timedelta クラスは事前にインポートされています。
この演習はコースの一部です
FastAPI を使った AI のプロダクション環境へのデプロイ
演習の手順
- 現在時刻を取得し、1分前のタイムスタンプを計算します。
- リクエストリストをフィルタリングして、直近1分以内のタイムスタンプのみを残します。
- 最近のリクエスト数が上限を超えているか確認します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
def is_rate_limited(self, api_key: str) -> bool:
# Get current time and the timestamp for one minute ago
now = _____
minute_ago = now - _____(minutes=1)
# Remove requests older than 1 minute
self.requests[api_key] = [
req_time for req_time in self.requests[api_key]
if req_time > _____]
# Check if no. of requests exceeded the set limit
if len(self.requests[api_key]) ____ self.requests_per_minute:
return True
self.requests[api_key].append(now)
return False