Backend amb Python i FastAPI — API modernes i escalables

← Inici
Backend i API

Backend amb Python i FastAPI — API modernes i escalables

FastAPI és el framework de referència de Python per a API REST asíncrones. Combina les anotacions de tipus natives de Python amb la validació automàtica de Pydantic, la documentació OpenAPI autogenerada i un rendiment ASGI comparable al de Node.js — sense sacrificar la llegibilitat del codi.

FastAPI — el framework de Python més ràpid

FastAPI s'executa sobre Uvicorn (servidor ASGI) amb Gunicorn per a multiprocés en producció. La Dependency Injection nativa permet provar de manera aïllada qualsevol capa sense mocks complexos: autenticació, sessió de base de dades, limitació de peticions — tot és una dependència injectable.

La documentació OpenAPI 3.1 es genera automàticament a partir de les anotacions de tipus — Swagger UI i ReDoc disponibles a `/docs` i `/redoc` en desenvolupament. L'esquema de Pydantic v2 (validador escrit en Rust) valida peticions i respostes entre 10 i 20 vegades més ràpid que Pydantic v1. Qualsevol camp invàlid retorna un 422 amb missatges d'error clars i localitzats.

  • async/await natiu — E/S no bloquejant en totes les operacions de BD i HTTP
  • BackgroundTasks per a operacions posteriors a la resposta (correu, webhook, registre)
  • Compatibilitat nativa amb WebSocket per a funcionalitats en temps real (xat, notificacions)
  • Limitació de peticions amb slowapi (basada en límits) — per IP i per usuari
  • CORS, compressió (gzip/brotli), request ID, middleware de temps

PostgreSQL, SQLAlchemy i Alembic

Fem servir SQLAlchemy 2.0 asíncron (controlador asyncpg) per a totes les operacions de BD. Els models es defineixen amb tipus Mapped — segurs pel que fa als tipus, sense cadenes. Les consultes complexes s'escriuen amb SQLAlchemy Core (verificat en temps de compilació) o amb SQL pur mitjançant `text()` amb paràmetres enllaçats — mai interpolació de cadenes (prevenció completa d'SQLi).

Les migracions d'Alembic es generen automàticament a partir dels canvis als models i es revisen manualment abans d'aplicar-les. Cada migració té `upgrade()` i `downgrade()` provats. En producció, les migracions s'executen a la CI abans del desplegament — la base de dades sempre està sincronitzada amb el codi. Agrupació de connexions via asyncpg amb mida de pool configurable per servei.

  • Bloqueig a nivell de fila amb `SELECT ... FOR UPDATE` per a operacions concurrents crítiques
  • Cerca de text complet amb pg_trgm i tsvector — sense Elasticsearch per als casos senzills
  • JSONB per a dades semiestructurades amb indexació GIN
  • Taules particionades per a taules amb milions de files (registres, esdeveniments)

Memòria cau amb Redis i escalabilitat horitzontal

Redis 7 s'utilitza per a la memòria cau de l'aplicació (TTL per endpoint), l'emmagatzematge de sessions (tokens de refresc JWT amb revocació selectiva), pub/sub per a esdeveniments en temps real i cues per a tasques en segon pla (Celery o ARQ). L'estratègia de memòria cau és cache-aside amb invalidació explícita — no pas un TTL cec que pot servir dades obsoletes.

  • Autenticació JWT amb token d'accés (15 min) + token de refresc a Redis (7 dies)
  • Celery + broker Redis per a tasques asíncrones (generació de PDF, correu, importacions)
  • Endpoint de comprovació d'estat `/health` amb l'estat de la BD i de Redis i la versió desplegada
  • Registre JSON estructurat (structlog) — compatible amb Loki/Datadog/ELK

Avantatges i limitacions

Avantatges

  • Rendiment ASGI comparable al de Node.js i Go en E/S.
  • Documentació OpenAPI autogenerada a partir de les anotacions de tipus.
  • Validació ràpida amb Pydantic v2, amb errors 422 clars.
  • Codi llegible, Python és familiar per a la majoria d'equips.

Limitacions

  • Python continua sent més lent que Go o Rust en tasques intensives de CPU.
  • async/await exigeix disciplina — una sola crida bloquejant atura tot el bucle d'esdeveniments.
  • Ecosistema més jove que Django en funcionalitats incloses de sèrie.
  • No inclou ORM ni administració — es trien per separat.

Veredicte ràpid

Tria FastAPI per a API REST asíncrones, microserveis i backends per a SPA/mòbil. Per a aplicacions amb una càrrega de CPU extrema o monòlits amb una administració ja feta, Go o Django, respectivament, poden encaixar millor.

Taula d'especificacions

CapacitatLímit / llindarÚs típic
Concurrènciaasync/await, E/S no bloquejantLes tasques intensives de CPU necessiten workers separatsAPI amb moltes crides a BD/HTTP
Latència< 5ms per endpoint amb memòria cau de RedisAugmenta amb la serialització de càrregues gransSaaS, mòbil, backend en temps real
Validació i documentacióPydantic v2 + OpenAPI 3.1 automàticEls esquemes complexos augmenten el temps d'arrencadaAPI públiques amb Swagger/ReDoc
Cost típicCodi obert, funciona amb 1 vCPUL'escalat horitzontal necessita més processosDes d'un MVP fins a producció

FastAPI davant les alternatives

CriteriFastAPIDjango / Express
Rendiment asíncronExcel·lent (ASGI natiu)Django parcial, Express bo
Documentació OpenAPI automàticaSí, a partir de les anotacions de tipusNecessita paquets addicionals
Administració / ORM integratsNo (es trien per separat)Django: sí; Express: no

Preguntes freqüents

FastAPI és més ràpid que Django?

Sí en E/S. FastAPI funciona de manera asíncrona sobre ASGI, de manera que gestiona moltes més peticions concurrents amb crides a BD/HTTP que el Django clàssic síncron. Django, però, té més funcionalitats integrades.

Per a què no és adequat FastAPI?

Per a tasques amb una càrrega de CPU molt elevada (processament d'imatges, càlcul numèric intensiu) Python és més lent que Go o Rust; aquestes tasques es mouen a workers separats. Tampoc no té una administració ja feta com Django.

FastAPI necessita un ORM?

No és obligatori. Fem servir SQLAlchemy 2.0 asíncron amb Alembic per a les migracions, però es pot escriure SQL pur. L'ORM no ve inclòs, de manera que es tria per a cada projecte.

Com s'escala un backend FastAPI?

Horitzontalment: s'executen diversos processos d'Uvicorn sota Gunicorn darrere d'un equilibrador de càrrega, amb memòria cau de Redis i les tasques pesades mogudes a Celery. El disseny sense estat permet afegir instàncies segons la demanda.

4b2b.net
Ecosistema empresarial
4conta.ro
Comptabilitat
4invoices.net
Aplicació de facturació
4expenses.net
Gestió de despeses
4notify.net
Notificacions
4hosting.net
Allotjament web
4database.net
Bases de dades
4buildsite.net
Creador de llocs web
4myapp.net
Creador d'aplicacions
4avatars.net
Avatars d'IA
4chaty.net
Xatbot d'IA
4webagency.net
Programari per a agències web
4softedu.net
Llocs web d'educació
4softcrm.net
Plataforma CRM
4softerp.net
Sistema ERP
4softhr.net
Gestió de recursos humans
4mystaff.net
Portal del personal
4myprojects.net
Gestor de projectes
4mycontracts.net
Contractes
4docs.net
Gestió documental
4appointments.net
Reserves
4marketingonline.net
Màrqueting
4insurance.net
Assegurances
4property.net
Immobiliàries
4lawyers.net
Programari jurídic
4mygarage.net
Taller mecànic
4driving.net
Autoescoles
4fleet.net
Gestió de flotes
4myevents.net
Esdeveniments
4therapy.net
Teràpia
4clinics.net
Clíniques
4dental.net
Consultes dentals
4restaurants.net
Restaurants
4beautify.net
Salons de bellesa
4gym.net
Gimnasos
4guards.net
Empreses de seguretat
4softvet.net
Clíniques veterinàries
4softauto.net
Programari per al negoci de l'automoció
4construct.net
Empreses de construcció
4marketplace.net
Marketplace
4shopy.net
Botiga en línia
4pricing.net
Comparador de preus
4salefood.net
Lliurament de menjar
4rentify.net
Lloguers
4transports.net
Transport
4agencytravel.net
Agència de viatges
4hotel.net
Gestió hotelera
4ong.net
Gestió d'ONG