0
0
FastAPIframework~20 mins

Request timing middleware in FastAPI - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Request Timing Middleware Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
component_behavior
intermediate
2:00remaining
What does this FastAPI middleware output?
Consider this FastAPI middleware that measures request processing time and adds it to the response headers. What will be the value of the header 'X-Process-Time' in the response?
FastAPI
from fastapi import FastAPI, Request
import time

app = FastAPI()

@app.middleware('http')
async def add_process_time_header(request: Request, call_next):
    start_time = time.time()
    response = await call_next(request)
    process_time = time.time() - start_time
    response.headers['X-Process-Time'] = str(process_time)
    return response
AA string representing the time in seconds it took to process the request, e.g., '0.0023'
BThe current timestamp in seconds since epoch as a string
CThe total number of requests processed so far as an integer string
DThe HTTP status code of the response as a string
Attempts:
2 left
💡 Hint
Think about what time.time() measures and how the difference is used.
📝 Syntax
intermediate
2:00remaining
Identify the syntax error in this FastAPI middleware
Which option contains a syntax error that will prevent this FastAPI middleware from running?
FastAPI
from fastapi import FastAPI, Request
import time

app = FastAPI()

@app.middleware('http')
async def timing_middleware(request: Request, call_next):
    start = time.time()
    response = await call_next(request)
    duration = time.time() - start
    response.headers['X-Duration'] = str(duration)
    return response
AChange 'response.headers['X-Duration'] = str(duration)' to 'response.headers.X-Duration = duration' (invalid attribute assignment)
BRemove 'async' keyword from the function definition (will cause error because 'await' is used)
CReplace 'await call_next(request)' with 'call_next(request)' (missing await causes error)
DChange @app.middleware('http') to @app.middleware('http') with parentheses as shown (correct syntax)
Attempts:
2 left
💡 Hint
Remember that 'await' can only be used inside async functions.
🔧 Debug
advanced
2:00remaining
Why does this middleware not add the timing header?
This middleware is intended to add a header 'X-Time' with the request duration, but the header is missing in responses. What is the cause?
FastAPI
from fastapi import FastAPI, Request
import time

app = FastAPI()

@app.middleware('http')
async def timing(request: Request, call_next):
    start = time.time()
    response = call_next(request)  # Missing await
    duration = time.time() - start
    response.headers['X-Time'] = str(duration)
    return response
AThe middleware must be synchronous, not async, to modify headers
BThe time.time() function is called before the request processing, so duration is always zero
CThe header name 'X-Time' is invalid and ignored by FastAPI
DThe call_next function is not awaited, so response is a coroutine, not a response object
Attempts:
2 left
💡 Hint
Check how async functions and await work with call_next.
state_output
advanced
2:00remaining
What is the output of this middleware with nested calls?
Given this middleware that adds timing and a route that calls another route internally, what will be the value of 'X-Process-Time' in the final response?
FastAPI
from fastapi import FastAPI, Request
import time

app = FastAPI()

@app.middleware('http')
async def timer(request: Request, call_next):
    start = time.time()
    response = await call_next(request)
    response.headers['X-Process-Time'] = str(time.time() - start)
    return response

@app.get('/inner')
async def inner():
    time.sleep(0.1)
    return {'message': 'inner'}

@app.get('/outer')
async def outer():
    from fastapi.testclient import TestClient
    client = TestClient(app)
    res = client.get('/inner')
    return {'inner_response': res.json()}
AThe 'X-Process-Time' header shows the combined time of '/outer' and '/inner' requests
BThe 'X-Process-Time' header is missing because TestClient blocks header propagation
CThe 'X-Process-Time' header shows the time taken to process the '/outer' request only, excluding '/inner' internal call
DThe middleware raises an error because time.sleep is blocking in async code
Attempts:
2 left
💡 Hint
Think about how TestClient calls are separate HTTP requests.
🧠 Conceptual
expert
3:00remaining
What is the best way to ensure accurate request timing in FastAPI middleware?
Which approach ensures the most accurate measurement of request processing time in FastAPI middleware?
ARecord start time before calling call_next, await call_next, then record end time immediately after to calculate duration
BRecord start time inside the route handler and pass it to middleware via request state
CUse time.sleep to simulate processing delay and measure time after sleep
DAdd a background task to measure time asynchronously after response is sent
Attempts:
2 left
💡 Hint
Middleware wraps the entire request processing.