Exercise 1: Why runserver Isn't for Production — Possible Solution ==================================================================== WHY runserver ISN'T MEANT FOR PRODUCTION ------------------------------ Per this chapter, Django's own documentation is explicit that manage.py runserver was never built to handle real production traffic - it has no real concurrency model, no process management, and isn't hardened for exposure to the open internet the way a real production server needs to be. WHAT gunicorn PROVIDES INSTEAD ------------------------------ Per this chapter, gunicorn is a real WSGI application server - it runs multiple worker processes to provide genuine concurrency (handling multiple requests at once properly), and it's built specifically to sit behind a proper reverse proxy (like nginx) rather than face the internet directly itself. This is the actual production-grade replacement for runserver's own dev-only convenience. WHY THIS WORKS AS AN ANSWER ------------------------------ It correctly explains that runserver lacks real concurrency and production hardening, and correctly identifies gunicorn's own multi-worker-process model as the specific capability that makes it suitable for real production traffic instead.