Djangoでの停止の要求の速度を抑制する
サーバーが動作している場合、サーバーアプリケーションが実行されている場合、要求がサーバーによって実行されず、応答またはエラーを返さないことはありません.
ただし、特定のエンドポイント上の要求の数を調整したい場合があります.
あなたは、パスワードの変更要求が行われたときにSMSの検証のための特別なエンドポイントを持っている.いいね.あなたは、10回のSMSを要求し、リクエストが実行されるボタンをクリックする特別なユーザーがいるまで.つまり、9台の高価なSMSが請求された.
すごい!我々は、1分後に要求された次のSMSを許可する方法をしたい.Djangoでそれをする方法?
私たちは絞りを使用します.リクエストが許可されているかどうかを決定する方法でパーミッションに似ています.しかし、それは一時的な状態を示して、クライアントがAPIに作ることができる要求の速度を制御するのに用いられます.
あなたがルータで登録されるSMS ViewSetを持っていると言いましょう.このようなPYファイル.
あなたは絞りについての詳細を学ぶことができますhere .
記事投稿bloggu.io . 無料でお試しください.
ただし、特定のエンドポイント上の要求の数を調整したい場合があります.
問題
あなたは、パスワードの変更要求が行われたときにSMSの検証のための特別なエンドポイントを持っている.いいね.あなたは、10回のSMSを要求し、リクエストが実行されるボタンをクリックする特別なユーザーがいるまで.つまり、9台の高価なSMSが請求された.
すごい!我々は、1分後に要求された次のSMSを許可する方法をしたい.Djangoでそれをする方法?
解決策
私たちは絞りを使用します.リクエストが許可されているかどうかを決定する方法でパーミッションに似ています.しかし、それは一時的な状態を示して、クライアントがAPIに作ることができる要求の速度を制御するのに用いられます.
あなたがルータで登録されるSMS ViewSetを持っていると言いましょう.このようなPYファイル.
class SMSViewSet(viewsets.ViewSet):
http_method_names = ("post",)
...
router.register(r"password", viewsets.SMSViewSet, basename="password")
設定する前に、新しい属性をSMSViewSet
クラスthrottle_scope
.class SMSViewSet(viewsets.ViewSet):
http_method_names = ("post",)
throttle_scope = "password-reset"
...
そして最後にREST_FRAMEWORK
の設定settings.py
ファイルを追加DEFAULT_THROTTLE_CLASSES
とDEFAULT_THROTTLE_RATES
設定.REST_FRAMEWORK = {
'DEFAULT_THROTTLE_CLASSES': [
'rest_framework.throttling.ScopedRateThrottle',
],
'DEFAULT_THROTTLE_RATES': {
'password-reset': '1/minute',
}
}
ドキュメントに続いてScopedRateThrottle
クラスはAPIの特定の部分へのアクセスを制限するために使用できます.このスロットルは、アクセスされているビューが.throttle_scope
プロパティ.あなたは絞りについての詳細を学ぶことができますhere .
記事投稿bloggu.io . 無料でお試しください.
Reference
この問題について(Djangoでの停止の要求の速度を抑制する), 我々は、より多くの情報をここで見つけました https://dev.to/koladev/restrain-the-rate-of-requests-with-throttling-in-django-4faテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol