Skip to main content
.com domains from $2.99 — free WHOIS privacy on every name

Developer Buying Guide

Python app hosting — Where a Django request actually spends its time

Every Python hosting decision is easy once you know which of the four stages of a request is eating the milliseconds.

The short answer

Find the bottleneck, then buy for it. Business hosting runs a standard Django or Flask site cleanly with Postgres beside it, and the VPS line begins where Celery, channels and system-level packages appear — but which side of that line you belong on is a question your own profiler answers in a single afternoon.

This page walks the request from the socket to the response, names the number that decides each stage, and finishes with the plan we would buy and the way to prove it helped.

By the HostingFast team · Reviewed 24 August 2026

NVMe

Storage on every plan

Free

Domain, first year

99.9%

Uptime target, monitored

Flat

Renewal pricing

Most writing on this subject is a league table bankrolled by referral fees. This one is a stopwatch: name the four stages of a Python request, measure each, and let the slowest one choose the hosting.

The official Django deployment documentation quietly assumes three things: WSGI serving, an isolated environment and a real database engine. Checking a provider against those three assumptions separates genuine Python support from a feature-list checkbox in under a minute.

The four stages, and what each one costs

Stage one is process startup. If your WSGI workers are being spawned per request rather than kept resident, you are paying interpreter startup and import time on every hit, and that alone can account for hundreds of milliseconds before your view function runs.

Stage two is the ORM. Django Debug Toolbar or the connection query log will show you the count and the duration; a list view issuing one query per row is the most common single cause of a slow Python page, and select_related is cheaper than any upgrade.

Stage three is template rendering and serialisation, which is usually small and occasionally catastrophic when a template loops over a queryset that has not been evaluated yet.

Stage four is static and media delivery, which should never touch Python at all. If your web server is proxying images through WSGI, fix that before you compare a single price.

The one figure to hold a host to

Deploy a view that returns a constant string, no database and no template, and measure its time to first byte from the connection your users actually have. That figure is the platform, isolated from your code, and it is the only number in this decision that a provider genuinely owns.

Under 100 milliseconds is a good platform. Between 100 and 300 is workable and worth asking about. Consistently above that, or wildly variable across a working day, means the machine is oversubscribed and no amount of query tuning on your side will rescue it.

Take the reading several times across a day rather than once. Variance is the symptom that separates a busy machine from a badly packed one.

What to buy once you know the number

A real WSGI or ASGI serving layer with resident workers, not CGI wearing a modern label; the freedom to create virtualenvs and run pip against a current interpreter; a database alongside it, where an available Postgres counts for a great deal; and somewhere for scheduled jobs, because scripts always accumulate around an application.

Overdrive is the plan this resolves to for a conventional site: PostgreSQL and MySQL both present, Python deployed natively, SSH from signup, 3.5 cores and 2.5 GB of RAM, and cron for the scrapers and nightly syncs.

The honest boundary sits at Celery beat, channels and anything needing a system package. Past that, take root on a VPS and stop fighting a managed account.

The trap: a Python checkbox with no Python behind it

The failure mode that costs the most time is a provider advertising Python while supplying a decade-old interpreter with pip disabled. Confirm the actual version number and the package policy before anything is paid — python3 --version over SSH takes four seconds and settles it.

Verify the rest of the claim the same way. Compare the renewal rate against the order rate, ask support something genuinely awkward at an inconvenient hour, read the refund terms for carve-outs, and look the company up on the public register.

Then bring a real site over inside the money-back window, re-run your profiler, and let the measurements decide. Migration is free, so the comparison costs only the time it takes.

A developer working against a hosted server over SSH

Why this page has no affiliate table

We are a host writing about hosting, and we would rather admit it in the first paragraph than imply neutrality we do not have. That trade buys the page room to be about profilers and target numbers instead of star ratings.

The rate you sign up at is the rate you renew at, so year two costs exactly what year one did — no ambush waiting in the invoice.

  • Checks written so you can run them yourself
  • python3 --version answered over SSH, not by a sales page
  • We move the site at no charge
  • Leaving takes one request

Why HostingFast

Standard on every plan

Postgres, not just MySQL

Both engines sit on the Business tier, so the database decision stays a design choice rather than a hosting constraint.

A current interpreter and pip

Virtualenvs you create yourself over SSH, against a Python you can check the version of before you buy.

cron for the drawer of scripts

Scrapers, report builders and nightly syncs run on a real scheduler with no server for you to administer.

Overdrive, stated plainly

500 GB of disk, 3.5 cores, 2.5 GB of RAM and native Node, Python and Ruby at one published monthly rate.

An upgrade that is not a migration

Shared, VPS and dedicated on one platform, so outgrowing a tier is an account change rather than a relocation.

A company you can check first

A contract with Vitalcare at Home Ltd, registered in England and Wales, under English law.

Prices Side by Side

Our numbers next to the big names

Typical intro and renewal pricing across the market, lined up against ours — including the renewal figure most comparison charts skip.

HostingFast pricing and features lined up against three other hosts
FeatureHostingFastMost popularTypical household-name hostTypical bargain hostTypical loss-leader deal
Starting price / mo*$2.42/mo$4–$6$2–$4$1–$3
Renewal price / mo$2.42/mo$10–$15$8–$12$4–$6
Cheapest plan renews at its sign-up price
SSL as standard
Migration done for you
NVMe drives on the cheapest tier
Daily backups from the first tier
Real humans on support, 24/7

*Our number is the lowest-priced plan we sell on an annual term, pulled live from the same catalogue that powers our pricing page — it physically cannot fall out of date. The other three columns show the ranges shared hosts in each bracket typically advertise: introductory offers that mostly demand a one-to-four-year commitment, then jump once it expires. We no longer name rivals or print their prices, because a figure we cannot verify on the day you read it has no business on this page. Line us up against whichever host you are really weighing — and give the renewal row the hardest look.

Quick Start

From order to online

  1. 1

    Time a view that does nothing

    A constant-string response, measured from your users' connection, isolates the platform from your code. Everything else in this decision is downstream of that figure.

  2. 2

    Count the queries on your worst page

    Debug Toolbar, one afternoon. If the count scales with the row count you have an N+1, and no plan on any host will fix it for you.

  3. 3

    Do the two-year arithmetic

    Renewal rate times the term, plus every extra you would genuinely switch on. The lowest headline figure rarely survives that arithmetic.

  4. 4

    Re-profile after the move

    Same views, same dataset, same time of day. Platform time and query time should be reported separately, or you will credit the move for work your indexes did.

Built In

Loaded onto every plan

  • A current Python interpreter, with the version verifiable over SSH
  • pip and virtualenv usable without a support ticket
  • PostgreSQL alongside MySQL on the Business tier
  • Resident WSGI or ASGI workers rather than per-request spawning
  • Static files served by the web server, never through Python
  • cron with minute granularity for scheduled scripts
  • NVMe SSD under the database, not spinning disk
  • Free SSL that renews itself well ahead of expiry
  • Free migration of your existing application by our engineers
  • Renewal charged at the rate you ordered at

Frequently Asked

What people ask us most often

How do I separate platform latency from my own code?

Deploy one view that returns a constant and measure it. Whatever that endpoint costs is the floor the platform imposes; everything above it belongs to your queries, templates and serialisers. Teams who skip this step spend weeks optimising an ORM to work around an oversubscribed machine.

Is Postgres worth insisting on over MySQL?

For Django, often yes — native JSON and array fields, stricter type handling, and a query planner that copes better with the joins the ORM tends to emit. It is not a performance rule, it is a fit question. Both are available here, so the choice does not have to be made at checkout.

What breaks first when a scheduled script gets heavier?

Process limits, usually before CPU. A managed account caps concurrent processes, so a scraper that quietly spawns workers hits the ceiling and fails partway rather than slowing down gracefully. Log the exit status of every cron job; silent partial failure is the characteristic bug of this workload.

Can I run Celery on a shared-class plan?

You can run the pattern but not the daemon. Short cron-invoked batches against a database or Redis broker handle modest queues perfectly well. Celery beat with resident workers wants supervision and system packages, which means root, which means a VPS — that is the honest line and we would rather draw it than sell past it.

Keep reading

Changing hosts? Run through our checklist first.

A straightforward sequence for a switch your visitors never feel: which files move first, how to shift email across without losing a single message, the right moment to repoint DNS, and the two mistakes behind almost all the downtime we get asked to rescue.

You'll get the checklist email, then occasional pointers on keeping a site running fast. Unsubscribe the moment you want out — the privacy policy covers the rest.

Find the bottleneck first.

Postgres, virtualenvs, real cron and NVMe under the database — at a rate that never moves at renewal.

View Business Hosting plans