0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Flask-Limiterインターフェースのアクセス周波数制限

Last updated at Posted at 2022-07-27

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をインストールする必要があります。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?