Python Developer interview question
When would you use asyncio?
asyncio is appropriate for high-concurrency I/O workloads whose libraries expose non-blocking APIs; it does not make CPU-heavy Python code parallel and blocking calls must leave the event loop.
Direct answer
What a strong answer covers
How it works
asyncio runs a single-threaded event loop that switches between coroutines at await points, so it shines when a service spends most of its time waiting on sockets: thousands of open connections cost memory, not threads. It only helps if every I/O call is non-blocking; one synchronous database driver or a CPU-heavy loop stalls every other task. CPU work goes to run_in_executor or a separate process, and libraries must be async-native or wrapped.
Example
A gateway that fans out one incoming request into twenty upstream HTTP calls uses asyncio.gather with an async HTTP client and serves the response in the time of the slowest upstream instead of the sum. A report generator that spends its time in pandas gains nothing from asyncio and belongs in a worker process.
Common mistakes
- Calling time.sleep or a blocking client inside a coroutine and freezing the loop.
- Creating tasks without keeping a reference so they are garbage collected mid-flight.
- Adopting asyncio for a CPU-bound service and adding complexity without concurrency.
A useful answer structure
Answer from your own work.
Do not memorise a script: use only examples you can explain honestly in follow-up questions.
Open the desktop workspace and rehearse a clear answer in your own words.