限制 Flask REST 的速率 API
Rate limiting a Flask REST API
我在我的烧瓶项目中设置了一个简单的 REST API,我正在尝试使用 flask_limiter 库对其进行速率限制。
from flask import Flask, request, redirect, session, render_template
from flask_restful import Api, Resource
from flask_limiter.util import get_remote_address
app = Flask(__name__)
api = Api(app)
# Api endpoint
class getData(Resource):
def get(self):
return {'data': 'data'}
api.add_resource(getData, "/data")
我尝试添加默认的 @limiter.limit()
装饰器,但它似乎不起作用。当我测试它时,只有默认限制有效。
limiter = Limiter(
app,
key_func=get_remote_address,
default_limits=["1000 per day", "3 per hour"]
)
class getData(Resource):
@limiter.limit("1 per minute")
def get(self):
return {'data': 'data'}
它没有像装饰器中指定的那样将访问限制为每分钟 1 次,而是使用默认限制器值。
是否可以使用此方法对我的 API 进行速率限制,我该怎么做?
我不确定您是否已经解决了您的问题,但以下是适合您情况的方法。需要包含在flask restful提供的method_decorators字段中。可以在以下链接中找到更多信息。
Flask limiter Question
我在我的烧瓶项目中设置了一个简单的 REST API,我正在尝试使用 flask_limiter 库对其进行速率限制。
from flask import Flask, request, redirect, session, render_template
from flask_restful import Api, Resource
from flask_limiter.util import get_remote_address
app = Flask(__name__)
api = Api(app)
# Api endpoint
class getData(Resource):
def get(self):
return {'data': 'data'}
api.add_resource(getData, "/data")
我尝试添加默认的 @limiter.limit()
装饰器,但它似乎不起作用。当我测试它时,只有默认限制有效。
limiter = Limiter(
app,
key_func=get_remote_address,
default_limits=["1000 per day", "3 per hour"]
)
class getData(Resource):
@limiter.limit("1 per minute")
def get(self):
return {'data': 'data'}
它没有像装饰器中指定的那样将访问限制为每分钟 1 次,而是使用默认限制器值。
是否可以使用此方法对我的 API 进行速率限制,我该怎么做?
我不确定您是否已经解决了您的问题,但以下是适合您情况的方法。需要包含在flask restful提供的method_decorators字段中。可以在以下链接中找到更多信息。
Flask limiter Question