同步操作将从 华北电力大学-iDeal/Python_RESTfulAPI_Codegen 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#!/user/bin/env python3# -*- coding:utf-8 -*-# file:interface_limiter.py# author:Superclass# datetime:2022年5月23日 12:32# software: PyCharm'''获取全局接口访问频率限制器'''import jsonimport osfrom flask import jsonifyfrom flask_limiter import Limiterfrom flask_limiter.util import get_remote_addressfrom utils.response_code import RETclass InterfaceLimiter(object):# 读取限制器有关配置default_limits = Noneerror_message = None@classmethoddef get_settings(cls):BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))CONFIG_PATH = os.path.join(BASE_DIR, "config/limiter.json")with open(CONFIG_PATH, 'r', encoding='utf-8') as f:settings = json.load(f)cls.default_limits = settings['default_limits']cls.error_message = settings['error_message']cls.second_limit = settings['second_limit']cls.minute_limit = settings['minute_limit']cls.hour_limit = settings['hour_limit']cls.day_limit = settings['day_limit']# 获取限制器,进行初始化@classmethoddef get_limiter(cls, app):cls.get_settings()limiter = Limiter(app,key_func=get_remote_address,default_limits=cls.default_limits)app.register_error_handler(429, cls.limiter_error_handler)return limiter# 限制超出时的错误页面,注册路由方法@classmethoddef limiter_error_handler(cls, e):data = {'code': RET.REQERR,'message': cls.error_message,'data': {'error': '访问频率超出限制:一分钟{}次'.format(cls.minute_limit)}}res = jsonify(data)res.code = 429return res
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。