以下是一个简单的速率限制代码示例,用于控制API的请求频率。
from flask import Flask, request, jsonify
app = Flask(__name__)
# 设置允许的最大请求次数
MAX_REQUESTS = 100
# 设置请求频率限制的时间窗口(秒)
TIME_WINDOW = 60
# 请求计数器
request_counts = {}
@app.route('/api/data', methods=['GET'])
def get_data():
# 获取用户的IP地址
user_ip = request.remote_addr
# 获取当前时间
current_time = time.time()
# 如果用户IP不存在于计数器中,则初始化计数器
if user_ip not in request_counts:
request_counts[user_ip] = []
# 删除超过时间窗口的请求记录
request_counts[user_ip] = [timestamp for timestamp in request_counts[user_ip] if current_time - timestamp < TIME_WINDOW]
# 如果请求计数超过最大请求次数,则返回错误信息
if len(request_counts[user_ip]) >= MAX_REQUESTS:
return jsonify({'error': '请求过于频繁'}), 429
# 添加当前请求时间到计数器
request_counts[user_ip].append(current_time)
# 返回数据
return jsonify({'data': '这是一些数据'})
if __name__ == '__main__':
app.run()
更多关于 Flask 框架和 API 开发的信息,请访问我们的Flask教程。
Python