限制 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

Flask restful method decorator