Deploy Django in production, Celery included
A Django application in production means a WSGI or ASGI server, a database, Redis, Celery workers and beat. All five go on the canvas as blocks and deploy from your Git repository, without YAML.
No credit card, no commitment.
Your Django repository
- Django application
- PostgreSQL
- Redis
- Celery workers
- Celery beat
- Object storage
Kubernetes, built and run by Fransys
The European cloud you chose Scaleway · OVHcloud · Hetzner · Outscale
What to build between runserver and production
On a developer's machine, Django fits in one command. In production, the Django checklist asks for a real WSGI or ASGI server, debug turned off, a secret key, allowed hosts, collected static files and media kept apart. Celery adds a broker, workers and a scheduler. The canvas describes this whole architecture, code included, and the platform operates it.
- 5blocks for a complete Django app
- 1deployment gesture: git push
- 0lines of YAML to write
The typical Django architecture, block by block
-
The application
Your repository, built from its Dockerfile and served by a WSGI or ASGI server, Gunicorn or Uvicorn for example. Domains, TLS and environment variables are set in the block.
-
The database
Managed PostgreSQL, automatic backups. Connect the block:
DB_HOST,DB_PASSWORDand the other credentials are injected into the application. -
Redis
The Celery broker and the cache on a dedicated block, sized separately. The broker URL is composed from the injected variables.
-
The Celery workers
A second Docker block on the same repository, with its own Dockerfile, runs
celery -A proj worker -l INFOon its own resources. On theTERMsignal, it finishes running tasks before stopping. -
Celery beat
A separate block, and a single instance: two schedulers would send duplicate tasks. The Celery documentation advises against embedding it in the worker in production.
-
The files
Static files go into the image with
collectstatic, served by WhiteNoise for example. Media, uploaded by your users, go to S3-compatible object storage, never into the image.
From push to release
-
git pushThe commit lands on the configured branch.
-
buildThe image is built with your Python dependencies and your collected static files.
-
migrateMigrations run before traffic is switched over.
-
liveThe new version receives traffic. On failure, automatic rollback to the previous one.
With your agent, or by hand
With your agentexample
Deploy my Django app: PostgreSQL, Redis, a Celery worker and beat.
- The agent reads your repository and prepares the plan: the blocks, each with its price.
- Someone on the team approves the plan.
- The engine executes; migrations run before traffic is switched over.
By hand
- Place the blocks on the canvas: application, database, Redis, worker, beat.
- Connect your Git repository and declare the migration in the deployment commands.
- Push to the configured branch: the release goes live.
What people ask about Django
Does Fransys have a Django block?
Django goes through the Docker block, with your Dockerfile. Laravel, React, Angular and Vue have a native block; other frameworks use this one, which has the same connections, variables, metrics and logs.
How are migrations handled?
python manage.py migrate is declared in the block's deployment commands. It runs after the new image is deployed and before traffic is switched over. If it fails, the deployment stops and the live version is left untouched.
Why do my forms return a CSRF error over HTTPS?
The certificate sits at the cluster entrance, and the proxy can hide from Django that the original request was HTTPS. Set SECURE_PROXY_SSL_HEADER to the pair HTTP_X_FORWARDED_PROTO and https, add your domains to ALLOWED_HOSTS and their https origins to CSRF_TRUSTED_ORIGINS.
What should I check before going to production?
Run python manage.py check --deploy, as the Django checklist asks. DEBUG stays False, SECRET_KEY lives in the block's variables, outside the repository, and ALLOWED_HOSTS carries your domains: without it, Django does not work.
Which Django version should I choose?
As of 2 November 2026, 5.2 LTS, whose latest patch is 5.2.18, is in extended support until April 2028: security fixes and data loss bugs. The latest official release is 6.1.2. The Python version and the base image remain your choice, in your Dockerfile.
What about scheduled tasks without Celery?
A manage.py command can run as a recurring task of the application block, a cron with its logs. Celery beat becomes useful once you already have workers.
To go further: CI/CD on Kubernetes and Kubernetes autoscaling.
Your Django app on Fransys: where to start
See the console in demo, in your name. To cost your app, the infra plan does it line by line, machines included.
No credit card, no commitment.
Read on the blog
What does a DevOps engineer really cost in 2026? (and how to keep that spend down)
Salary, social contributions, recruitment, turnover: the real cost of a DevOps engineer in France exceeds €90,000/year. Full breakdown and alternatives for startups without DevOps.
Heroku and Vercel too expensive: where to migrate in 2026?
Heroku with no free tier, Vercel bills spiralling: a comparison of European alternatives for startups. Migrate to managed Kubernetes without DevOps.
AWS vs Fransys: what does your cloud infrastructure really cost in 2026?
A detailed AWS vs Fransys comparison on European hosting. Prices line by line, and three costed startup scenarios.