Flask-Limiterインターフェースのアクセス周波数制限
flask-limiter-サードパーティの周波数制御プラグイン
ドキュメント:FlaskLIMITER
フラスコリミッターは、クライアントのアクセスレートを制限するフラスコ拡張機能です。アクセス(速度)制限をカスタマイズして、制限をトリガーするリクエストを除外できます。通常、クローラーを制限するために使用されます。
実現方法
# -*- coding: utf-8 -*-
from flask import Flask
from flask_limiter import Limiter
from flask_limiter.util import get_remote_address
app = Flask(__name__)
limiter = Limiter(
app,
key_func=get_remote_address,
# 1日に何回、1時間に何回、1分に何回
default_limits=["20 per day", "2 per hour", "1 per minute"],
# 保存場所は、保存するRedisを選択できます
storage_uri="redis://:123456@127.0.0.1:6379/0"
)
# アドレスには、1分に1回しかアクセスできません
@app.route("/slow")
@limiter.limit("1 per minute")
def slow():
return "24"
# アドレスをグローバル構成に移動default_limits
@app.route("/fast")
def fast():
return "42"
# アドレスpingスルー
@app.route("/ping")
@limiter.exempt
def ping():
return "PONG"
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5000)
- redisを保存場所として使用する場合、redisでリミッターキャッシュを作成するには、対応するサポートライブラリをインストールする必要があることに注意する必要があります。Flask-Limiterは自動的にインストールされないため、手動でpipinstallflask-redisをインストールする必要があります。