""" 限流器使用示例 """ from flask import jsonify from iti.applications.extensions.limit import limiter def create_example_app(): """创建示例应用""" from iti.applications import create_app return create_app('dev') app = create_example_app() @app.route('/') def index(): """首页 - 使用默认限流""" return jsonify({'message': 'Hello, World!'}) @app.route('/api/public') @limiter.limit("10 per minute") # 自定义限流:每分钟10次 def public_api(): """公共 API - 自定义限流""" return jsonify({'message': 'Public API', 'data': 'some data'}) @app.route('/api/private') @limiter.limit("5 per minute") # 更严格的限流:每分钟5次 def private_api(): """私有 API - 更严格的限流""" return jsonify({'message': 'Private API', 'data': 'sensitive data'}) @app.route('/api/unlimited') @limiter.exempt # 豁免限流 def unlimited_api(): """无限制 API - 豁免限流""" return jsonify({'message': 'Unlimited API', 'data': 'no limits'}) @app.route('/api/conditional') @limiter.limit("20 per hour", per_method=True) # 按方法限流 def conditional_api(): """条件限流 API - 按方法限流""" return jsonify({'message': 'Conditional API', 'data': 'method specific'}) @app.route('/api/user-specific') @limiter.limit("100 per hour", key_func=lambda: "user_123") # 自定义键函数 def user_specific_api(): """用户特定 API - 自定义键函数""" return jsonify({'message': 'User specific API', 'user': 'user_123'}) @app.route('/api/rate-limit-info') def rate_limit_info(): """获取限流信息""" if limiter is None: return jsonify({'message': 'Rate limiting is disabled'}) return jsonify({ 'message': 'Rate limiting is enabled', 'default_limits': limiter.default_limits, 'storage_uri': limiter.storage_uri, 'key_func': limiter.key_func.__name__ if limiter.key_func else None }) if __name__ == '__main__': print("🚀 启动限流器示例应用") print("📊 访问 http://localhost:5000/api/rate-limit-info 查看限流配置") print("🔒 访问其他端点测试限流功能") app.run(debug=True)