1.2 KiB
Rate Limiting Configuration for Flask Backend
Add this to requirements.txt
flask-limiter
redis # Optional: for distributed rate limiting
""" Rate limiting implementation - add to app.py """
At the top of app.py, add
from flask_limiter import Limiter from flask_limiter.util import get_remote_address
After creating app, add
limiter = Limiter( app=app, key_func=get_remote_address, default_limits=["200 per day", "50 per hour"], storage_uri="memory://" # Use redis:// for production with multiple workers )
Apply rate limiting to specific endpoints
@app.route('/api/profiles', methods=['GET','POST']) @limiter.limit("100 per hour") def profiles(): # ... existing code ... pass
@app.route('/api/songs', methods=['GET','POST']) @limiter.limit("100 per hour") def songs(): # ... existing code ... pass
@app.route('/api/search_external') @limiter.limit("30 per hour") # More restrictive for external API calls def search_external(): # ... existing code ... pass
@app.route('/api/upload_lyric', methods=['POST']) @limiter.limit("10 per hour") # File uploads should be rate limited def upload_lyric(): # ... existing code ... pass