Swasthya Sarathi
A healthcare-companion platform for Swasthya Sarathi
A website and mobile app development project for a multi-service healthcare companion — It helps peo...
Read itPython 3.12 · Django · FastAPI · Celery
The language for the work behind the website: data, ML inference, automation and APIs that handle many requests. We do Python development on Django, FastAPI and Flask, typed with mypy, packaged so it runs the same everywhere, and honest about where async helps and where it hurts.
Last updated
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 computing, automation, and APIs whose real job is to sit in front of a model. For this kind of problem, Python has a library for almost everything, and many people already know it. It is also a really good web backend. Django can run a full product with payments and orders, and FastAPI can run an API with many requests. You just need to pick the framework the problem really needs. Most of our Python development is one of two kinds: a Django product with a real admin, or a small FastAPI service in front of a model or a data job. We build both. We are also open about the one case where we would pick a different language.
Talk to a Python engineerType hints checked on every pull request. A reviewer can understand how Python code behaves, so there are no 2am surprises.
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 pick when the hard part of the problem is not the website 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 choice with everything included: an ORM, migrations, an admin, login and a mature set of tools. It is ideal for a content-heavy product or one with many orders, where the team gains from strong rules and a ready-made back office. FastAPI is what we use for fast, async-first APIs that handle many requests, and for anything serving a model. It has typed request and response schemas from Pydantic, automatic OpenAPI docs, and async that holds up when many things happen at once. Flask is still the right answer for a small service with a narrow job that needs no more framework than necessary. 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 easy to write. This tempts teams to make everything async and then block the event loop with a synchronous database driver or a heavy CPU call. That is the worst of both worlds. We use async where the work is truly I/O-bound and happens at the same time. We keep the CPU-heavy work in a process pool or a separate worker. We never mix a blocking library into an async path without noticing. Getting this line wrong is the most common reason a "fast framework" mysteriously stalls under load. It is one of the things we are most often called in to fix.
Python's old weakness is that "it works on my machine" is a real danger. We pin the versions of all packages with a lockfile, use a modern toolchain such as uv or Poetry, and ship in containers so the setup is the same from a laptop to production. Type hints and mypy in CI turn Python's flexibility from a risk into something a reviewer can understand. Tests run under pytest against real dependencies, not a wall of mocks. None of this is unusual. All of it is the difference between a Python service you can keep up and a script that has quietly become something everyone depends on.
A large share of our Python development sits between a product and a machine-learning model, whether that is a classic model you trained, an open-source model you host yourself, or a hosted LLM you call. The work that matters there is rarely the model. It is grouping and queuing requests so a slow call cannot block a request, caching a lot, handling timeouts and backups so a provider outage slows things gently and does not take the product down, and keeping a clean line so the model can be swapped without touching the application. Celery or a task queue carries the heavy work. FastAPI serves the thin, fast front.
| Choose Python | Choose something else | |
|---|---|---|
| Data, ML or scientific workload | Yes, by a wide margin. No other language has as many tools for data and ML. | Nothing we would suggest over it for this kind of problem. |
| API in front of a model | FastAPI, async, typed schemas, and a task queue for the heavy work. This is exactly what it is good at. | Pick something else only if the rest of your platform already uses another stack. |
| Content-heavy transactional web product | Django is excellent. Admin, ORM, login and migrations come ready to use. | Laravel is an equally strong answer if your team works in PHP. Pick by team, not by trend. |
| Sustained CPU-bound work in the request | Only if the heavy calculation is moved into NumPy, a compiled extension or a separate worker. | Go or Rust for the busiest part if the calculation really dominates. Let Python manage it. |
| 100k concurrent WebSocket connections | Possible with an async server, but not where Python is best. | Go or Node for the socket part. Keep Python for the data and model work behind it. |
| Team has no Python and a tight deadline | Fine for a service that stands alone. It is quick to learn. | Do not force a whole product into a stack you do not know when time is short. Build in what your team can debug. |
APIs built async-first that handle many requests, with typed Pydantic schemas and generated OpenAPI docs. Often the fast front in front of a model or a data store.
Content-heavy web apps and apps with many orders, with the admin, ORM, login and migrations that get a real product live quickly.
Taking in data, changing it and running scheduled jobs with pandas and a task queue. Built so you can see what happens and run it again, not a cron job nobody trusts.
The work around a model: grouping, queuing, caching, a safe backup plan and a model you can swap. It works for models you host yourself or a hosted LLM.
Scraping, document and image processing, and small services that connect systems that were never meant to talk. We turn weak scripts into well-kept software.
A script everyone depends on, or an async service that stalls, gets types, tests and repeatable packaging. We find and fix whatever blocks the event loop.
For data, ML, scientific computing, automation and connecting systems, the package you need almost certainly exists and is mature. This is Python's biggest advantage.
FastAPI on an async server handles many users at once when the work is I/O-bound, as long as nothing blocking sneaks onto the event loop.
Type hints and mypy in CI make a flexible language easy to review. We treat a public interface with no types as a fault, not a choice.
Celery or a task queue carries inference, ETL and long jobs, with retries and a place for failed jobs, so the API front stays thin and fast.
A lockfile and a container remove "works on my machine" completely. The setup is the same from a developer laptop to production.
Long, heavy CPU work inside the same process is where Python struggles. We keep it apart or use the right tool for that part. We do not pretend the limit is not there.
The path we take whether the work is a new API, a data pipeline or a feature that uses a model.
We separate I/O-bound work from CPU-bound work, the request path from the background work, and the data side from the website. The framework choice (Django, FastAPI or Flask) comes from this, not from habit.
A fixed toolchain, containers, type hints with mypy, and pytest connected to CI before feature work starts. The plain groundwork that decides whether the project is easy to keep up in month six.
A fast, typed API at the front. The heavy work (inference, ETL, long jobs) goes on a task queue with retries and a place for failed jobs. The line between them is clear and can be swapped.
We test with many users at once, check that the async line holds, and make sure a slow outside system or a provider outage slows things gently. Clear logs, error tracking and speed dashboards go in here.
Run guides, a design note and a getting-started session so your team can run and extend it. Or we stay on a monthly plan with a set SLA response time.
Tools we pick when the choice is ours. We swap them when your platform already runs something else.
APIs, pipelines and model features doing real work, with the pros and cons written down.
A fleet, ePOD and route-planning platform that works offline first, for drivers on roads with poor signal. The two ready...
A Shopify store for a Surat ethnic-wear label. It has 200+ SKUs of lehengas, sarees and suits, sorted by type, colour, f...
A Shopify storefront for a Surat watch and eyewear retailer — where shoppers can browse by gender, brand, style and comb...
Tell us what the work behind your website really is, and where it hurts. A senior engineer replies within one business day with scope, risk and a price, not a brochure.
FAQ
Proof
Swasthya Sarathi
A website and mobile app development project for a multi-service healthcare companion — It helps peo...
Read itMV Tech Education
A website development project for a Bihar vocational institute. It is a course list and admissions s...
Read itPatna Taxi
A website development project for a Patna and Muzaffarpur cab operator. It is a fast taxi-booking si...
Read itReact that is built on the server, ranks in Google and does not send 300 KB of JavaScript...
ExploreThe framework we have built more business systems on than any other. Laravel 12 with Octan...
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.