0
0
FastAPIframework~20 mins

Concurrent task execution in FastAPI - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
FastAPI Concurrency Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
component_behavior
intermediate
2:00remaining
What is the output of this FastAPI endpoint using async tasks?
Consider this FastAPI endpoint that runs two async tasks concurrently and returns their results.

What will the response JSON be when calling this endpoint?
FastAPI
from fastapi import FastAPI
import asyncio

app = FastAPI()

async def task1():
    await asyncio.sleep(1)
    return "task1 done"

async def task2():
    await asyncio.sleep(1)
    return "task2 done"

@app.get("/run-tasks")
async def run_tasks():
    results = await asyncio.gather(task1(), task2())
    return {"results": results}
A{"results": ["task1 done"]}
B{"results": ["task2 done", "task1 done"]}
C{"results": ["task1 done", "task2 done"]}
D{"results": []}
Attempts:
2 left
💡 Hint
Think about how asyncio.gather collects results in order of the tasks passed.
📝 Syntax
intermediate
2:00remaining
Which option correctly runs multiple tasks concurrently in FastAPI?
You want to run three async functions concurrently inside a FastAPI endpoint and wait for all to finish. Which code snippet is correct?
Aresults = [await func1(), await func2(), await func3()]
Bresults = await asyncio.gather(func1(), func2(), func3())
Cresults = asyncio.gather(func1(), func2(), func3())
Dresults = await asyncio.wait({func1(), func2(), func3()})
Attempts:
2 left
💡 Hint
Remember that asyncio.gather returns a coroutine that must be awaited.
🔧 Debug
advanced
2:00remaining
Why does this FastAPI endpoint hang indefinitely?
This FastAPI endpoint is supposed to run two async tasks concurrently and return their results. But it never responds. Why?

Code:
from fastapi import FastAPI
import asyncio

app = FastAPI()

async def task1():
await asyncio.sleep(1)
return "done1"

async def task2():
await asyncio.sleep(1)
return "done2"

@app.get("/hang")
def hang():
results = asyncio.gather(task1(), task2())
return {"results": results}
FastAPI
from fastapi import FastAPI
import asyncio

app = FastAPI()

async def task1():
    await asyncio.sleep(1)
    return "done1"

async def task2():
    await asyncio.sleep(1)
    return "done2"

@app.get("/hang")
def hang():
    results = asyncio.gather(task1(), task2())
    return {"results": results}
AThe tasks are blocking the event loop causing a deadlock.
BThe endpoint is missing a return statement.
Casyncio.gather is used incorrectly with synchronous functions.
DThe endpoint is not async and does not await asyncio.gather, so it returns a coroutine object instead of running it.
Attempts:
2 left
💡 Hint
Check if the endpoint function is async and if await is used properly.
state_output
advanced
2:00remaining
What is the output order of concurrent tasks with different sleep times?
Given this FastAPI endpoint, what will be the order of results in the response?

Code:
from fastapi import FastAPI
import asyncio

app = FastAPI()

async def fast_task():
await asyncio.sleep(0.1)
return "fast"

async def slow_task():
await asyncio.sleep(0.5)
return "slow"

@app.get("/order")
async def order():
results = await asyncio.gather(slow_task(), fast_task())
return {"results": results}
FastAPI
from fastapi import FastAPI
import asyncio

app = FastAPI()

async def fast_task():
    await asyncio.sleep(0.1)
    return "fast"

async def slow_task():
    await asyncio.sleep(0.5)
    return "slow"

@app.get("/order")
async def order():
    results = await asyncio.gather(slow_task(), fast_task())
    return {"results": results}
A{"results": ["slow", "fast"]}
B{"results": ["fast", "slow"]}
C{"results": ["slow"]}
D{"results": ["fast"]}
Attempts:
2 left
💡 Hint
asyncio.gather returns results in the order of the input tasks, not completion order.
🧠 Conceptual
expert
2:00remaining
Which statement about FastAPI concurrency with asyncio is TRUE?
Select the correct statement about how FastAPI handles concurrent async tasks using asyncio.
AFastAPI automatically runs multiple requests in parallel using asyncio event loop without blocking synchronous code.
BUsing async def endpoints with blocking code inside them improves concurrency performance.
CFastAPI requires all endpoint functions to be synchronous to handle concurrency properly.
Dasyncio.gather runs tasks sequentially, so concurrency is not achieved.
Attempts:
2 left
💡 Hint
Think about how async endpoints and the event loop work in FastAPI.