python flask接口限制频率方案及解决思路

文章描述了在使用Flask和相关扩展如Flask-Limiter时遇到的ImportError问题,涉及jinja2、itsdangerous和werkzeug的版本不匹配。作者通过逐步升级依赖包解决了这些问题,并展示了如何设置频率限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此三方包经过测试对版本各个要求严格,否则无效果

严格按照以下版本及方式测试:

安装对应版本的flask

 pip install Flask==1.1.1

安装 Flask-Limiter控制频率

 pip install Flask-Limiter==1.4

报错1:

ImportError: cannot import name 'escape' from 'jinja2' (C:\Users\Administrator\AppData\Local\Programs\Python\Python37-32\lib\site-packages\jinja2\__init__.py)

安装这个版本3.0.3

pip install jinja2==3.0.3

报错2:

ImportError: cannot import name 'json' from 'itsdangerous' (C:\Users\Administrator\AppData\Local\Programs\Python\Python37-32\lib\site-packages\itsdangerous\__init__.py)
pip install itsdangerous==2.0.1

报错3:

ImportError: cannot import name 'BaseResponse' from 'werkzeug.wrappers' (C:\Users\Administrator\AppData\Local\Programs\Python\Python37-32\lib\site-packages\werkzeug\wrappers\__init__.py)
pip install --upgrade werkzeug==1.0.1


from flask import Flask
from flask_limiter import Limiter

app = Flask(__name__)
limiter = Limiter(app)


@app.route('/test', methods=['GET'])
@limiter.limit("0/second")
#@limiter.limit("1000/day")
#@limiter.limit("10/hour")
#@limiter.limit("1/minute")
def getSmid(token):
	data = "ok"
    try:
        return data
    except Exception as e:
        print("Error:", e)
    return data


if __name__ == '__main__':
    app.run(host="0.0.0.0", port=8888)

设置了0/s, 也就是不让请求,就会返回如下:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Codeooo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值