Up to now I used Gunicorn and virtual private servers to run my applications.
Now I would like to use Kubernetes.
According to this answer you don’t need Gunicorn in a K8s environment.
Which http server do you use instead? Just
Follow-up question Gunicorn workers in K8s?
That’s a terrible answer. Do not use
runserver in production. As per docs:
DO NOT USE THIS SERVER IN A PRODUCTION SETTING. It has not gone through security audits or performance tests. (And that’s how it’s gonna stay. We’re in the business of making Web frameworks, not Web servers, so improving this server to be able to handle a production environment is outside the scope of Django.)
I just started to wondering the same thing: Does
gunicorn add a value to django apps in kubernetes clusters anymore? Running as a process manager?
Since in kubernetes era we don’t really need
uvicorn as a process manager anymore. As this answer mentioned answer, kubernetes pod schedulers now handle
django apps/containers as gunicorn handles
uvicorn workers. And via ingress controlled
Load Balancer every requests goes to correct django app/container/replica.
Another great example about it can be found on FastAPI doc replication:
If you have a cluster of machines with Kubernetes , Docker Swarm Mode, Nomad, or other similar complex system to manage distributed containers on multiple machines, then you will probably want to handle replication at the cluster level instead of using a process manager (like Gunicorn with workers) in each container.
In those cases, you would probably want to build a Docker image from scratch as explained above, installing your dependencies, and running a single Uvicorn process instead of running something like Gunicorn with Uvicorn workers.
Ofc the scope of my question is async apps —
gunicorn, not sync