Bird
Raised Fist0
Flaskframework~20 mins

Health check endpoints in Flask - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Health Check Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
1:30remaining
What is the output of this Flask health check endpoint?
Consider this Flask app code snippet for a health check endpoint. What will the endpoint return when accessed?
Flask
from flask import Flask, jsonify
app = Flask(__name__)

@app.route('/health')
def health_check():
    return jsonify(status='ok', uptime=12345), 200

# Assume the server is running and /health is accessed
A{"status":"ok","uptime":12345}
BInternal Server Error
C404 Not Found
Dstatus=ok, uptime=12345
Attempts:
2 left
💡 Hint
Flask's jsonify returns JSON with correct headers.
📝 Syntax
intermediate
1:30remaining
Which option causes a syntax error in this Flask health check route?
Identify which Flask route definition will cause a syntax error.
Flask
from flask import Flask, jsonify
app = Flask(__name__)

# Four route definitions below
A@app.route('/health')\ndef health()\n return jsonify(status='ok')
B@app.route('/health')\ndef health():\n return jsonify(status='ok')\n print('done')
C@app.route('/health')\ndef health():\n return jsonify(status='ok')
D@app.route('/health')\ndef health():\n return jsonify(status='ok', code=200)
Attempts:
2 left
💡 Hint
Check for missing colons in function definitions.
❓ state_output
advanced
1:30remaining
What is the HTTP status code returned by this health check endpoint?
Given this Flask health check endpoint, what HTTP status code will the client receive?
Flask
from flask import Flask, jsonify
app = Flask(__name__)

@app.route('/health')
def health_check():
    response = jsonify(status='ok')
    response.status_code = 503
    return response
A500
B200
C404
D503
Attempts:
2 left
💡 Hint
The status_code attribute sets the HTTP status code.
🔧 Debug
advanced
2:00remaining
Why does this Flask health check endpoint raise a TypeError?
Examine the code and identify why it raises a TypeError when accessed.
Flask
from flask import Flask, jsonify
app = Flask(__name__)

@app.route('/health')
def health_check():
    data = {'status': 'ok'}
    return jsonify(data, 200)
AMissing return statement causes TypeError
BThe dictionary 'data' is not JSON serializable
Cjsonify() does not accept multiple positional arguments like (data, 200)
DFlask app is not instantiated properly
Attempts:
2 left
💡 Hint
Check the signature of jsonify function.
🧠 Conceptual
expert
1:30remaining
Which option best describes the purpose of a health check endpoint in Flask?
Select the most accurate description of why a health check endpoint is used in a Flask application.
ATo authenticate users before accessing the main app routes
BTo provide a simple URL that returns the app's status for monitoring systems
CTo serve the main homepage content of the Flask app
DTo handle all errors and exceptions globally
Attempts:
2 left
💡 Hint
Think about monitoring and uptime checks.

Practice

(1/5)
1. What is the main purpose of a health check endpoint in a Flask application?
easy
A. To connect to the database and run queries
B. To handle user login and authentication
C. To confirm the app is running and responsive
D. To serve static files like images and CSS

Solution

  1. Step 1: Understand the role of health check endpoints

    Health check endpoints are simple URLs that return a status message indicating the app is running properly.
  2. Step 2: Compare options with this role

    Only To confirm the app is running and responsive matches this purpose. Other options describe unrelated app functions.
  3. Final Answer:

    To confirm the app is running and responsive -> Option C
  4. Quick Check:

    Health check = Confirm app running [OK]
Hint: Health check endpoints confirm app health quickly [OK]
Common Mistakes:
  • Confusing health check with user authentication
  • Thinking health check serves static files
  • Assuming health check runs database queries
2. Which of the following is the correct way to define a simple health check endpoint in Flask?
easy
A. app.route('/health') def health(): return {'status': 'ok'}
B. @app.route('/health') health = {'status': 'ok'}
C. app.route('/health') health = lambda: {'status': 'ok'}
D. @app.route('/health') def health(): return {'status': 'ok'}

Solution

  1. Step 1: Recall Flask route decorator syntax

    Flask uses @app.route('/path') decorator above a function to define routes.
  2. Step 2: Check each option for correct syntax

    @app.route('/health') def health(): return {'status': 'ok'} correctly uses @app.route decorator and defines a function returning a dictionary. Others miss the decorator or define incorrectly.
  3. Final Answer:

    @app.route('/health')\ndef health():\n return {'status': 'ok'} -> Option D
  4. Quick Check:

    Use @app.route decorator for routes [OK]
Hint: Use @ before app.route to define Flask routes [OK]
Common Mistakes:
  • Forgetting the @ symbol before app.route
  • Returning a dictionary without a function
  • Assigning route to a variable instead of a function
3. Given this Flask code, what will be the JSON response when accessing /health?
from flask import Flask, jsonify
app = Flask(__name__)

@app.route('/health')
def health():
    return jsonify(status='ok', uptime=12345)
medium
A. {"status": "ok", "uptime": 12345}
B. status=ok, uptime=12345
C. {"status": ok, "uptime": "12345"}
D. A runtime error occurs

Solution

  1. Step 1: Understand jsonify output

    The jsonify function converts keyword arguments into a JSON response with keys as strings and values as their types.
  2. Step 2: Check the returned JSON format

    It returns a JSON string with keys "status" and "uptime". The uptime is an integer, so no quotes around 12345.
  3. Final Answer:

    {"status": "ok", "uptime": 12345} -> Option A
  4. Quick Check:

    jsonify returns JSON string with keys and values [OK]
Hint: jsonify returns proper JSON with quotes on keys and string values [OK]
Common Mistakes:
  • Missing quotes around string values
  • Confusing Python dict print with JSON string
  • Expecting runtime error when code is correct
4. What is wrong with this Flask health check endpoint code?
from flask import Flask
app = Flask(__name__)

app.route('/health')
def health():
    return {'status': 'ok'}
medium
A. The route decorator is missing the @ symbol
B. It will cause a syntax error because return type is wrong
C. It returns a Python dict but Flask needs a Response or JSON
D. The function name 'health' is reserved and cannot be used

Solution

  1. Step 1: Recall Flask route decorator syntax

    Flask uses the @app.route('/path') decorator above the function definition. The @ symbol is required to apply the decorator.
  2. Step 2: Analyze the provided code

    The code has app.route('/health') without the @, so it calls the route method but does not decorate the health function. Thus, the /health endpoint will not be registered and accessing it returns 404.
  3. Final Answer:

    The route decorator is missing the @ symbol -> Option A
  4. Quick Check:

    Missing @ means no route registration [OK]
Hint: Use @ before app.route to define Flask routes [OK]
Common Mistakes:
  • Returning plain dict without jsonify
  • Forgetting @ before route decorator
  • Thinking function names are reserved keywords
5. You want to create a health check endpoint in Flask that returns status 'ok' only if the database connection is alive, otherwise 'error'. Which approach is best?
hard
A. Return {'status': 'ok'} always, ignoring database state
B. Check database connection inside the route, return JSON accordingly
C. Use a separate thread to update status and return cached result
D. Raise an exception if database is down and let Flask handle it

Solution

  1. Step 1: Understand health check purpose with dependencies

    A health check should verify critical dependencies like database connectivity to report accurate status.
  2. Step 2: Evaluate options for checking database state

    Check database connection inside the route, return JSON accordingly directly checks the database connection inside the route and returns JSON status accordingly, which is clear and reliable.
  3. Step 3: Consider other options

    Return {'status': 'ok'} always, ignoring database state ignores database state, C adds unnecessary complexity, D relies on exceptions which is less clear for health checks.
  4. Final Answer:

    Check database connection inside the route, return JSON accordingly -> Option B
  5. Quick Check:

    Health check should verify dependencies live [OK]
Hint: Check dependencies live inside health endpoint for accuracy [OK]
Common Mistakes:
  • Ignoring database state in health check
  • Overcomplicating with threads or caching
  • Relying on exceptions instead of status checks
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard