python 限流中间件
时间: 2024-03-04 22:47:16 浏览: 121
Python限流中间件是一种用于控制流量的工具,它可以帮助我们限制对某个接口或者某个服务的访问频率,以防止恶意请求或者过载导致的性能问题。下面是一个简单的Python限流中间件的实现示例:
```python
import time
from functools import wraps
from flask import Flask, request, jsonify
app = Flask(__name__)
def rate_limit(limit, interval):
def decorator(func):
last_time = 0
count = 0
@wraps(func)
def wrapper(*args, **kwargs):
nonlocal last_time, count
now = time.time()
if now - last_time > interval:
count = 0
last_time = now
count += 1
if count > limit:
return jsonify({'error': 'Rate limit exceeded'}), 429
return func(*args, **kwargs)
return wrapper
return decorator
@app.route('/api', methods=['GET'])
@rate_limit(limit=10, interval=60) # 每分钟最多处理10个请求
def api():
return jsonify({'message': 'Hello, World!'})
if __name__ == '__main__':
app.run()
```
在上面的示例中,我们定义了一个`rate_limit`装饰器函数,它接受两个参数:`limit`表示限制的请求数量,`interval`表示时间间隔。装饰器会记录每次请求的时间,并统计在指定时间间隔内的请求数量。如果请求数量超过了限制,就会返回一个错误响应。
这个示例使用了Flask框架来实现一个简单的API接口,每分钟最多处理10个请求。你可以根据自己的需求和框架进行相应的修改和适配。
阅读全文