Django on Vercel
Vercel publishes its own guide for deploying Django.
Python web framework with an ORM, admin interface and long-running server process.
What Django needs.
Every host claims to run Django, so the claim on its own decides nothing. These are the things Django actually requires from the platform underneath it, and what Vercel publishes about each. Vercel documents 2 of the 4.
Persistent processes
Not documented
Django is served by a WSGI or ASGI worker that stays up. Celery workers are a second long-running process alongside it.
Managed databases
Not documented
Django's ORM, migrations and admin all assume a real relational database. Postgres is the default assumption in its own documentation.
Managed connection pooling
Limited
Django opens a database connection per worker. Without pooling, a modest traffic spike exhausts Postgres connection slots long before it exhausts CPU.
Sources (1) →Sources ↓
- Connection Pooling with Vercel Functions — Vercel Guides ↗
“On Fluid compute, the default execution model for new Vercel projects, Functions reuse global state within a warm instance. Multiple concurrent invocations share the same instance, so they can share a single database connection or connection pool instead of opening a new connection on every request. To pool connections safely, initialize your pool in the global scope and register it with attachDatabasePool from @vercel/functions [...] This helper closes idle connections before an instance suspends, which keeps your connection count under control.”
Read 2026-09-05 · official docs
Scheduled jobs
Supported
Management commands are how Django does recurring work. With no scheduler you need a second service whose only job is to trigger them.
Sources (1) →Sources ↓
- Cron Jobs - Vercel Docs ↗
“Vercel supports cron jobs for Vercel Functions. Cron jobs can be added through vercel.json or the Build Output API.”
Read 2026-09-05 · official docs
What Vercel documents.
Vercel publishes its own guide for deploying Django.
Deploy a Django app to Vercel with the Python runtime and Vercel Functions.
Sources (1) →Sources ↓
- Deploy a Django app on Vercel ↗
“Deploy a Django app to Vercel with the Python runtime and Vercel Functions.”
Read 2026-09-05 · official docs
Django features on Vercel
Capabilities Vercel documents specifically for Django, with the constraint it documents alongside each.
background_workers
Limited
Deploy Celery on Vercel with the Python runtime, Vercel Queues, and Vercel Functions. [...] Each invocation runs one task at a time. Your throughput comes from Vercel Queues invoking the subscriber function many times in parallel, not from worker processes or a pool size.
scheduled_jobs
Limited
Vercel supports cron jobs for Vercel Functions. Cron jobs can be added through vercel.json or the Build Output API. [...] An example endpoint Vercel would make a request to in order to trigger a cron job might be: https://*.vercel.app/api/cron.
persistent_disk
Not supported
Vercel functions have a read-only filesystem with writable /tmp scratch space up to 500 MB.
one_off_commands
Limited
To use environment variables locally (for example, to run migrations), first pull them with vercel pull
Sources (4) →Sources ↓
- Run background tasks with Celery on Vercel ↗
“Deploy Celery on Vercel with the Python runtime, Vercel Queues, and Vercel Functions. [...] Each invocation runs one task at a time. Your throughput comes from Vercel Queues invoking the subscriber function many times in parallel, not from worker processes or a pool size.”
Read 2026-09-13 · official docs
- Cron Jobs — Vercel Docs ↗
“Vercel supports cron jobs for Vercel Functions. Cron jobs can be added through vercel.json or the Build Output API. [...] An example endpoint Vercel would make a request to in order to trigger a cron job might be: https://*.vercel.app/api/cron.”
Read 2026-09-13 · official docs
- Vercel Functions Runtimes — Vercel Docs ↗
“Vercel functions have a read-only filesystem with writable /tmp scratch space up to 500 MB.”
Read 2026-09-13 · official docs
- Deploy a Django app on Vercel ↗
“To use environment variables locally (for example, to run migrations), first pull them with vercel pull”
Read 2026-09-13 · official docs
What it costs to run there.
- Entry paid plan
- $20 per developer seat / month (Pro)
- Pricing model
- Per-seat subscription plus metered resource usage; CDN charges cover requests, data transfer to visitors and Fast Origin Transfer, and vary by the region a request comes from.
- When you exceed a cap
- Billed automatically: extra usage beyond the included amount or Pro credit is charged, not throttled or suspended
- Regions
- 20 compute-capable regions, from Stockholm and Mumbai to Cleveland and Cape Town; functions default to iad1 (Washington, D.C.).
Sources (4) →Sources ↓
- Vercel Hobby Plan ↗
“Developer seats cost $20 per user / month, while Viewer seats are free”
Read 2026-09-05 · official docs
- CDN — Vercel Docs ↗
“CDN pricing covers CDN requests, data transfer to visitors, and Fast Origin Transfer. Pricing can vary by the region where requests originate. CDN requests appear as Edge Requests in Billing and on the Usage page.”
Read 2026-09-14 · official docs
- Pricing on Vercel ↗
“Some resources include an amount of usage your projects can use within your billing cycle. Pro teams also receive a monthly usage credit and can use many resources on demand. If you exceed an included amount or credit, Vercel charges for the extra usage.”
Read 2026-09-05 · official docs
- Regions — Vercel Docs ↗
“Vercel regions: Behind these PoPs, we maintain 20 compute-capable regions where your code can run close to your data. [...] Vercel Functions default to running in the iad1 (Washington, D.C., USA) region.”
Read 2026-09-14 · official docs
Whether it suits you.
Teams building on a framework the CDN understands natively, who want a predictable per-seat cost with metered usage on top. The Git integration covers GitHub, GitLab, Bitbucket and Azure DevOps, so it drops into an existing review workflow.
Consider something else if…
The team is large enough that $20 per developer seat dominates the bill rather than the metered usage underneath it.
Visit Vercel documentation