Early access is open. Migration assistance is included with every plan.

Django hosting

Run Django with Gunicorn, Celery, managed PostgreSQL and Redis. Migrations run during release, static files are served from the edge cache, and Celery workers get their own CPU allocation.

Build and run

9live detects Django automatically. You can override any default in 9live.toml, or add a Dockerfile and we'll use that instead.
Detected by
manage.py, or django in requirements.txt
Build
pip install -r requirements.txt && python manage.py collectstatic --noinput
Start
gunicorn config.wsgi:application --bind 0.0.0.0:$PORT --workers 4
Dockerfile (optional)
FROM python:3.12-slim
WORKDIR /app
ENV PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
RUN python manage.py collectstatic --noinput
EXPOSE 8000
CMD ["gunicorn", "config.wsgi:application", "--bind", "0.0.0.0:8000", "--workers", "4"]

Recommendations

Settings that work well for Django on dedicated hardware.
  • Set the release command to python manage.py migrate so migrations run once per deploy.
  • WhiteNoise works well for static files and needs no external CDN.
  • Run Celery workers and Celery beat as separate process types.
  • Managed PostgreSQL supports PostGIS and pgvector.
PlanPricevCPUMemoryNVMeDatabasesBackups
Launch$149/mo816 GB160 GB1Daily, kept 7 days
Grow$249/mo1232 GB320 GB2Daily, kept 14 days
Scale$349/mo1648 GB500 GB3, plus a read replicaHourly and daily, kept 30 days
CustomOn requestAs requiredUp to a full serverAs requiredAs requiredAs required

Questions

Do we need a Dockerfile to deploy Django?

No. 9live detects Django and builds it with a maintained buildpack. If your repository has a Dockerfile, we use it instead.

How are environment variables managed?

Set them per environment in the dashboard or with the CLI. They are encrypted at rest and injected at runtime. Connection strings for managed databases are added automatically.

What happens when a deploy fails?

If the build fails, or the new release fails its health check, the current release keeps serving traffic. You get a notification with the build or health-check logs.

Talk to an engineer about your setup

Tell us what you run today and where it runs. We reply within one business day with a recommended plan and an estimate for the migration.