Python / Uvicorn Fundamentals Interview Questions
How does Uvicorn's --reload flag work and what does it require?
The --reload flag enables automatic server restart when Python source files change. It is designed for development workflows, saving you from manually restarting the server after every code change.
# Basic auto-reload (restarts when any .py file changes) uvicorn main:app --reload # Watch specific directories instead of the entire working directory uvicorn main:app --reload --reload-dir src/ uvicorn main:app --reload --reload-dir src/ --reload-dir tests/ # Include extra file patterns to watch uvicorn main:app --reload --reload-include "*.html" --reload-include "*.css" # Exclude patterns from watching uvicorn main:app --reload --reload-exclude "*.log" # IMPORTANT: --reload and --workers are mutually exclusive! # This will raise an error: # uvicorn main:app --reload --workers 4 ← WRONG
How it works: Uvicorn uses the watchfiles library (installed by uvicorn[standard]) to monitor the filesystem. When a watched file changes, the server process is restarted. Without watchfiles installed, --reload falls back to a slower polling method.
Key constraint: --reload and --workers are mutually exclusive. Reload mode uses a single process with a reloader wrapper - multiple workers are not compatible. For production, disable reload and use multiple workers instead.
More Related questions...