import time
from flask import Flask, request, jsonify
app = Flask(__name__)
REQUEST_LIMIT = 5 # Number of requests allowed
TIME_WINDOW = 60 # Time window in seconds
request_counts = {} # Dictionary to store request counts per IP address
def is_rate_limited(ip_address):
"""Checks if the IP address is rate-limited."""
if ip_address not in request_counts:
request_counts[ip_address] = 0
if request_counts[ip_address] >= REQUEST_LIMIT:
return True
request_counts[ip_address] += 1
return False
@app.route('/form', methods=['POST'])
def submit_form():
"""Handles form submissions with rate limiting."""
ip_address = request.remote_addr
if is_rate_limited(ip_address):
return jsonify({"error": "Rate limit exceeded. Please try again later."}), 429 # 429 Too Many Requests
try:
# Process the form data
data = request.get_json()
# Simulate a potential failure
if 'error' in data and data['error'] == 'simulated_error':
return jsonify({"error": "Simulated form submission error."}), 500
# ... Your form processing logic here ...
print("Form submitted successfully.")
return jsonify({"message": "Form submitted successfully."}), 200
except Exception as e:
# Handle form processing errors
print(f"Form processing error: {e}")
return jsonify({"error": "Internal server error."}), 500
finally:
# Reset request count after successful processing
if ip_address in request_counts:
request_counts[ip_address] = 0
if __name__ == '__main__':
app.run(debug=True)
Add your comment