Swasthya Sarathi
A healthcare-companion platform for Swasthya Sarathi
A website and mobile app development project for a multi-service healthcare companion — helping peop...
Read itPython 3.12 · Django · FastAPI · Celery
The language for the work behind the web layer — data, ML inference, automation and high-throughput APIs. We do Python development on Django, FastAPI and Flask, typed with mypy, packaged reproducibly, and honest about where async helps and where it hurts.
The reason to choose Python is rarely the web page. It is everything behind it: data pipelines, machine-learning inference, document and image processing, scientific computation, automation, and APIs whose real job is to sit in front of a model. For that class of problem, Python has a library for almost everything and a hiring pool that already knows it. It is also a genuinely good web backend — Django will carry a full transactional product, FastAPI a high-throughput API — as long as you pick the framework the problem is actually asking for. Most of our Python development is one of two shapes: a Django product with a real admin, or a lean FastAPI service fronting a model or a data workload. We build both, and we are candid about the one case where we would reach for a different language instead.
Talk to a Python engineerType hints checked on every pull request. Python's dynamism becomes something a reviewer can reason about rather than a 2am surprise.
FastAPI async for concurrent I/O; process pools for CPU-bound work. We never block the event loop and call it fast.
A lockfile and a container, so the app behaves identically from a laptop to production. No "works on my machine".
Tests that exercise the database and the queue, not a wall of mocks agreeing with themselves.
Python is the language we reach for when the hard part of the problem is not the web layer but the work behind it: data pipelines, machine-learning inference, document and image processing, scientific computation, automation and scraping, or an API whose real job is to sit in front of a model. It is also a perfectly good choice for a straight web backend. The skill is knowing which framework the problem is actually asking for, because "Python development" covers three very different tools.
Django is the batteries-included choice: an ORM, migrations, an admin, authentication and a mature ecosystem, ideal for a content-heavy or transactional product where the team benefits from strong conventions and a back office out of the box. FastAPI is what we use for high-throughput, async-first APIs and for anything serving a model — typed request and response schemas from Pydantic, automatic OpenAPI docs, and native async that holds up under concurrent I/O. Flask remains the right answer for a small, sharply scoped service that should carry no more framework than it needs. We pick per service, sometimes running Django for the product and FastAPI for the inference tier in the same system, and we write down why.
FastAPI and modern Python make async cheap to write, which tempts teams into making everything async and then blocking the event loop with a synchronous database driver or a CPU-bound call — the worst of both worlds. We use async where the workload is genuinely I/O-bound and concurrent, keep the CPU-bound work in a process pool or a separate worker, and never mix a blocking library into an async path without noticing. Getting this boundary wrong is the most common cause of a "fast framework" that mysteriously stalls under load, and it is one of the things we are most often called in to fix.
Python's historic weakness is that "it works on my machine" is a genuine hazard. We pin dependencies with a lockfile, standardise on a modern toolchain such as uv or Poetry, and ship in containers so the runtime is identical from a laptop to production. Type hints and mypy in CI turn Python's dynamism from a liability into something a reviewer can reason about. Tests run under pytest against real dependencies, not a wall of mocks. None of this is exotic; all of it is the difference between a Python service you can maintain and a script that has quietly become load-bearing.
A large share of our Python development sits between a product and a machine-learning model — whether that is a classical model you trained, an open-source model you self-host, or a hosted LLM you call. The engineering that matters there is rarely the model: it is batching and queuing inference so a slow call cannot block a request, caching aggressively, handling timeouts and fallbacks so a provider outage degrades gracefully rather than taking the product down, and keeping a clean boundary so the model can be swapped without touching the application. Celery or a task queue carries the heavy work; FastAPI serves the thin, fast edge.
| Choose Python | Choose something else | |
|---|---|---|
| Data, ML or scientific workload | Yes, and it is not close. The library ecosystem for data and ML is unmatched in any other language. | Nothing we would recommend over it for this shape of problem. |
| API in front of a model | FastAPI, async, typed schemas, a task queue for the heavy work. This is exactly what it is good at. | Only reach elsewhere if the rest of your platform is already committed to another stack. |
| Content-heavy transactional web product | Django is excellent — admin, ORM, auth and migrations out of the box. | Laravel is an equally strong answer if your team lives in PHP; pick by team, not by fashion. |
| Sustained CPU-bound work in the request | Only with the compute pushed into NumPy, a compiled extension or a separate worker. | Go or Rust for the hot path if the compute genuinely dominates. Let Python orchestrate it. |
| 100k concurrent WebSocket connections | Workable with an async server, but not where Python shines. | Go or Node for the socket tier; keep Python for the data and model logic behind it. |
| Team has no Python and a tight deadline | Fine for a self-contained service; the ramp is short. | Do not force a whole product into an unfamiliar stack on a deadline — ship in what your team can debug. |
High-throughput, async-first APIs with typed Pydantic schemas and generated OpenAPI docs — often the fast edge in front of a model or a data store.
Content-heavy and transactional web applications with the admin, ORM, auth and migrations that get a real product to production quickly.
Ingestion, transformation and scheduled batch work with pandas and a task queue, built to be observable and re-runnable rather than a cron nobody trusts.
The engineering around a model — batching, queuing, caching, graceful fallback and a swappable model boundary — whether self-hosted or a hosted LLM.
Scraping, document and image processing, and glue services that connect systems that were never meant to talk — turned from fragile scripts into maintained software.
A load-bearing script or a stalling async service put under types, tests and reproducible packaging, with the event-loop blocking found and fixed.
For data, ML, scientific computing, automation and integration, the package you need almost certainly exists and is mature. This is Python's decisive advantage.
FastAPI on an async server handles high concurrency well when the workload is I/O-bound — provided nothing blocking sneaks onto the event loop.
Type hints and mypy in CI make a dynamic language reviewable. We treat an untyped public interface as a defect, not a preference.
Celery or a task queue carries inference, ETL and long jobs, with retries and dead-lettering, so the API edge stays thin and fast.
A lockfile and a container remove "works on my machine" entirely. The runtime is identical from a developer laptop to production.
Sustained CPU-bound work in-process is where Python struggles. We isolate it or use the right tool for that tier rather than pretending the limit is not there.
The path we take whether the work is a new API, a data pipeline or a model-backed feature.
We separate the I/O-bound from the CPU-bound, the request path from the background work, and the data realities from the web layer. The framework choice — Django, FastAPI or Flask — falls out of this, not out of habit.
A locked toolchain, containers, type hints with mypy, and pytest wired into CI before feature work starts. The boring scaffolding that decides whether the project is maintainable in month six.
A fast, typed API on the edge; the heavy work — inference, ETL, long jobs — on a task queue with retries and dead-lettering. The boundary between them is explicit and swappable.
We test under realistic concurrency, verify the async boundary holds, and make sure a slow upstream or a provider outage degrades gracefully. Structured logs, error tracking and latency dashboards go in here.
Runbooks, an architecture note and an onboarding session so your team can run and extend it — or we stay on a retainer with a defined response SLA.
Defaults we reach for when the choice is ours, and swap when your platform already runs something else.
APIs, pipelines and model-backed features doing real work, with the trade-offs written down.
A Shopify storefront for a Surat ethnic-wear label — 200+ SKUs of lehengas, sarees and suits organised by type, colour,...
A fleet, ePOD and route-optimisation platform built offline-first for drivers in low-connectivity corridors — because th...
A Shopify storefront for a Surat watch and eyewear retailer — browsable by gender, brand, style and combo, with predicti...
Tell us what the work behind your web layer actually is, and where it hurts. A senior engineer replies within one business day with scope, risk and a number — not a brochure.
FAQ
Proof
Swasthya Sarathi
A website and mobile app development project for a multi-service healthcare companion — helping peop...
Read itMV Tech Education
A website development project for a Bihar vocational institute — a course-catalogue and admissions s...
Read itPatna Taxi
A website development project for a Patna and Muzaffarpur cab operator — a fast, mobile-first taxi-b...
Read itReact that renders on the server, ranks in Google and does not ship 300 KB of JavaScript t...
ExploreThe framework we have shipped more business systems on than any other. Laravel 12 with Oct...
ExploreOne codebase, both stores, and a release you can fix the same afternoon. We build React Na...
ExploreLet's talk python development
A senior engineer reads every enquiry. You'll get a real answer — scope, risk and a number — within one business day.