Failed deploys
Find your release in the dashboard under Releases, or watch the CLI output. The log explains why a release failed. These are the common causes.
“Account suspended for non-payment”
Section titled ““Account suspended for non-payment””Your subscription is unpaid or canceled. Update your card under Settings → Billing and deploy again. See Billing.
Build settings problems
Section titled “Build settings problems”The server checks every build setting and lists all problems at once. Fix them in .djangocloud/config.json and deploy again. The most common are:
asgi_moduleandwsgi_moduleare both missing or wrong. One of them must point at your application, for exampleconfig.asgi:application.asgi_modulewins when both are set; pinservertogunicornto use the WSGI app instead.python_versionis not one of 3.10, 3.11, 3.12 or 3.13.- Your project lives in a subfolder. Set
rootto the folder that containsmanage.py.
The build fails
Section titled “The build fails”- A package needs system libraries. Add them to
system_packages, for examplelibpq-dev. collectstaticfails because settings need a secret at import time. See the production checklist.- The build takes too long. A build that runs around 9 to 10 minutes is stopped. Avoid compiling heavy packages from source.
“This release has no source”
Section titled ““This release has no source””A release was created without code. Upload one with the CLI, or connect a repository in the dashboard.
“No GitHub access token for this build”
Section titled ““No GitHub access token for this build””The short-lived token that lets the build read your repository expires after an hour. Deploy again to get a new one.
The release deploys but never becomes healthy
Section titled “The release deploys but never becomes healthy”The platform requests your health check path and waits for a successful response. If it never gets one, the release fails and the previous release keeps serving.
- Make sure the path doesn’t redirect to a login page.
- Check
ALLOWED_HOSTS, because Django returns 400 for unknown hosts. - Check the release command (migrations) isn’t failing.
- Confirm
portmatches the port your app listens on.
“This size hasn’t been paid for yet”
Section titled ““This size hasn’t been paid for yet””Only relevant to hosted plans. Complete the payment for the new size, then deploy.
Rollback refused
Section titled “Rollback refused”A rollback is refused if the release is older than migrations that are already applied, or if it never ran successfully or its image was pruned. See Releases and rollbacks.
“Upgrade needed”
Section titled ““Upgrade needed””Your CLI is older than the minimum version the service supports, and the command stopped before changing anything. Upgrade it with pip install -U djangocloud-cli, or uv tool upgrade djangocloud-cli if you installed it with uv, and run the command again.
“This project only accepts deploys whose tests passed”
Section titled ““This project only accepts deploys whose tests passed””The project requires passing tests (djangocloud tests --require on) and this deploy didn’t report a passing run. Run the deploy from the CLI with tests switched on (djangocloud tests on) and without --skip-tests. A deploy of a GitHub commit has no test run, so it is refused too. Turn the requirement off with djangocloud tests --require off. See Tests before deploys.
Still stuck?
Section titled “Still stuck?”Ask in Slack and include your project name, release number and the last lines of the log.
