Start here. This is the direct spoken answer to practice first.
Overview
Treats Python web workers as measured processes with separate memory, lifecycle, and failure boundaries.
Uvicorn is an ASGI server and can run one or multiple worker processes. Gunicorn is a process manager with worker classes; an ASGI application needs an ASGI-capable worker arrangement. Each worker is a separate process with its own event loop, connections, and application state. I start with the deployment platform's process model, then choose worker count from CPU, memory, blocking behavior, and measured throughput rather than a fixed formula.