Python Hosting
Django, Flask or FastAPI, with no servers or process managers to look after. Push to GitHub and Chajio Cloud runs your app on two replicas, with free SSL and a managed database.
$ git push origin main
▸ Detected Python: requirements.txt
▸ Using Python 3.12, from .python-version
▸ Installing packages from requirements.txt
▸ Starting the web process from Procfile
▸ gunicorn app:app --bind 0.0.0.0:$PORT
✓ Live on 2 replicas: https://my-app.live.chajio.cloud
How it works
How we build and run your Python app
Detect
A
requirements.txtmarks your repository as a Python app. Apyproject.tomlorPipfileworks too.Pick the version
A
.python-versionfile holding just the version, such as3.12, picks the Python your app runs on, so production matches your laptop.Install
Your packages install, including the server that runs your app in production:
gunicornfor Django and Flask,uvicornfor FastAPI.Run
The
web:line in yourProcfilestarts the app. Django projects are recognised and started even without one.
Get ready
Getting your Python app ready
web: gunicorn app:app --bind 0.0.0.0:$PORT --workers 2app:app means the variable app in app.py. For an app factory, use "app:create_app()".
web: uvicorn main:app --host 0.0.0.0 --port $PORT --proxy-headers --forwarded-allow-ips="*"--proxy-headers lets FastAPI see that visitors arrived over HTTPS, so the redirects it builds use https://.
web: python manage.py collectstatic --noinput && python manage.py migrate && gunicorn yourproject.wsgi --workers 2Collects static files for whitenoise, applies migrations, then starts Gunicorn, which reads PORT itself.
Works with
What you can run
Django
Recognised automatically. Add whitenoise for static files.
Django REST Framework
APIs deploy like any Django project.
Wagtail
Django’s CMS, set up the same way.
Flask
Served by Gunicorn. App factories work.
FastAPI
Served by Uvicorn, with proxy headers on.
Starlette
Any ASGI app runs under Uvicorn.
In production
Running your Python app in production
A production server, not the dev one
flask run and manage.py runserver aren’t built for real traffic. Add gunicorn or uvicorn to your requirements and start with it.
Django and ALLOWED_HOSTS
The platform’s health check comes from inside the network, not from your domain, so a strict ALLOWED_HOSTS rejects it. Answer /healthz in a small middleware placed before Django’s host check.
Settings from the environment
Read required values with os.environ["NAME"] and optional ones with os.environ.get("NAME", "default"). With Django, dj-database-url turns DATABASE_URL into your database settings.
HTTPS is handled
Visitors who type http:// are sent to https:// before they reach your app, so Django needs no SECURE_SSL_REDIRECT.
Every plan
Included on every plan
2 replicas of every app
Two copies behind a load balancer, so a restart or a failed machine never takes you offline.
A managed database
PostgreSQL, MariaDB or MongoDB, with its own standby replica on another machine.
Deploy on every push
Connect GitHub once; every push to your branch builds and goes live.
One-click rollbacks
Go back to any earlier successful deployment from the Deployments tab.
Free SSL, your domain
Certificates issued and renewed for you, plus a free .live.chajio.cloud address.
Build and runtime logs
Watch builds as they run, and see what your app prints as it serves visitors.
CPU, memory and network
Metrics for every app, from the last 15 minutes to the last 30 days.
Zero-downtime deploys
A new version takes visitors only once its health check passes.
Pricing
Python hosting plans
Free Plan
5GB DB Storage · 2GB RAM
Then $3.50/mo
- 2 vCPU
- 2 Apps
- 1 Database
- 2 App Replicas (HA)
- 2 Database Replicas (HA)
- PostgreSQL, MariaDB or MongoDB
- Deploy from GitHub
- Auto-deploy on push
- One-click rollbacks
- Deployment history
- Build & runtime logs
- CPU, RAM, disk & network metrics
- Disk usage tracking
- Environment variables
- Custom domain
- Free SSL
Growth Plan
10GB DB Storage · 2GB RAM
- 3 vCPU
- 4 Apps
- 2 Databases
- 2 App Replicas (HA)
- 2 Database Replicas (HA)
- PostgreSQL, MariaDB or MongoDB
- Deploy from GitHub
- Auto-deploy on push
- One-click rollbacks
- Deployment history
- Build & runtime logs
- CPU, RAM, disk & network metrics
- Disk usage tracking
- Environment variables
- Custom domain
- Free SSL
Business Plan
20GB DB Storage · 4GB RAM
- 4 vCPU
- 6 Apps
- 3 Databases
- 2 App Replicas (HA)
- 2 Database Replicas (HA)
- PostgreSQL, MariaDB or MongoDB
- Deploy from GitHub
- Auto-deploy on push
- One-click rollbacks
- Deployment history
- Build & runtime logs
- CPU, RAM, disk & network metrics
- Disk usage tracking
- Environment variables
- Custom domain
- Free SSL
Pro Plan
30GB DB Storage · 8GB RAM
- 8 vCPU
- 10 Apps
- 5 Databases
- 2 App Replicas (HA)
- 2 Database Replicas (HA)
- PostgreSQL, MariaDB or MongoDB
- Deploy from GitHub
- Auto-deploy on push
- One-click rollbacks
- Deployment history
- Build & runtime logs
- CPU, RAM, disk & network metrics
- Disk usage tracking
- Environment variables
- Custom domain
- Free SSL
FAQ
Python hosting questions
The one in your .python-version file, which holds just the version, for example 3.12. Without it you get a default that may not match the version you develop on.
For Flask and FastAPI, yes: one line starting with web: that runs Gunicorn or Uvicorn. Django projects are recognised without one, but a Procfile that also collects static files is the better setup.
Yes. A pyproject.toml or a Pipfile works as well, as long as it lists the server your app runs on, such as gunicorn or uvicorn.
PostgreSQL or MariaDB through Django’s ORM or SQLAlchemy, and MongoDB through PyMongo. Every plan includes a managed database, and its connection string reaches your app as DATABASE_URL.
Because the check isn’t addressed to a host in ALLOWED_HOSTS. Answer the health check path in a middleware that runs before Django’s host validation, as the Python deploy guide shows.
You can start on the Free plan: free for your first month, then $3.50 a month, with 2 vCPU, 2GB RAM, 2 apps and a managed database. The Growth, Business and Pro plans add more CPU, memory, apps and databases as you grow.
Plans are priced and billed in US dollars, and you pay by card at checkout.
More App Hosting
Deploying something else?
Deploy your Python app today
Your first month is on us, with a managed database and two replicas from day one.