以下是一个简单的速率限制代码示例,用于控制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