0
0
Flaskframework~20 mins

Rate limiting for protection in Flask - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Rate Limiting Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
component_behavior
intermediate
2:00remaining
Understanding basic rate limiting behavior in Flask
Given this Flask app snippet using Flask-Limiter, what happens when a client exceeds the limit?
Flask
from flask import Flask
from flask_limiter import Limiter
from flask_limiter.util import get_remote_address

app = Flask(__name__)
limiter = Limiter(app, key_func=get_remote_address, default_limits=["3 per minute"])

@app.route("/")
def index():
    return "Hello, world!"
AThe client is blocked permanently after 3 requests.
BThe client receives a 429 Too Many Requests error after 3 requests in one minute.
CThe client receives a 500 Internal Server Error after 3 requests.
DThe client can make unlimited requests without any error.
Attempts:
2 left
💡 Hint
Think about what '3 per minute' means for request limits.
📝 Syntax
intermediate
2:00remaining
Identify the syntax error in Flask-Limiter setup
Which option contains a syntax error in setting up Flask-Limiter with a custom limit?
Flask
from flask import Flask
from flask_limiter import Limiter
from flask_limiter.util import get_remote_address

app = Flask(__name__)
limiter = Limiter(app, key_func=get_remote_address, default_limits=["5 per minute"])

@app.route("/data")
@limiter.limit("10 per minute")
def data():
    return "Data response"
A
@limiter.limit(10 per minute)
def data():
    return "Data response"
B
@limiter.limit('10 per minute')
def data():
    return "Data response"
C
@limiter.limit("10 per minute")
def data():
    return "Data response"
D
@limiter.limit("10/minute")
def data():
    return "Data response"
Attempts:
2 left
💡 Hint
Check how the limit string is passed in the decorator.
🔧 Debug
advanced
2:00remaining
Why does the rate limit not apply as expected?
A developer uses Flask-Limiter with this code but finds the limit is never enforced. What is the cause?
Flask
from flask import Flask
from flask_limiter import Limiter

app = Flask(__name__)
limiter = Limiter(key_func=lambda: "fixed_key")

@app.route("/test")
@limiter.limit("2 per minute")
def test():
    return "Test endpoint"
AThe Limiter is not attached to the Flask app instance, so limits are not enforced.
BThe key_func returns a fixed string, so all clients share the same limit, causing no limit.
CThe route decorator is missing, so the function is never called.
DThe limit string "2 per minute" is invalid and ignored.
Attempts:
2 left
💡 Hint
Check how Limiter is initialized with the app.
state_output
advanced
2:00remaining
What is the value of remaining requests after 2 calls?
Using Flask-Limiter with a limit of 3 requests per minute, what is the remaining request count after two successful calls from the same client?
Flask
from flask import Flask
from flask_limiter import Limiter
from flask_limiter.util import get_remote_address

app = Flask(__name__)
limiter = Limiter(app, key_func=get_remote_address, default_limits=["3 per minute"])

@app.route("/resource")
def resource():
    return "Resource accessed"
A2
B0
C1
D3
Attempts:
2 left
💡 Hint
Think about how many requests remain after two out of three allowed.
🧠 Conceptual
expert
2:00remaining
Why use a distributed rate limiter in Flask apps?
In a Flask app deployed on multiple servers behind a load balancer, why is using a distributed rate limiter important?
ABecause distributed rate limiters automatically block all IP addresses permanently.
BBecause distributed rate limiters are faster than local ones in single-server setups.
CBecause Flask does not support local rate limiting without a distributed system.
DBecause local in-memory limits on each server won't share state, allowing clients to bypass limits by switching servers.
Attempts:
2 left
💡 Hint
Consider what happens when requests come to different servers.