Tehnoloģijas

← Sākums
Backend un API

Python & FastAPI backend — modernas un mērogojamas API

FastAPI ir atsauces Python ietvars asinhroniem REST API. Tas apvieno natīvos Python type hints ar automātisku Pydantic validāciju, automātiski ģenerētu OpenAPI dokumentāciju un ASGI veiktspēju, kas salīdzināma ar Node.js — neupurējot koda lasāmību.

FastAPI — ātrākais Python ietvars

FastAPI darbojas uz Uvicorn (ASGI serveris) ar Gunicorn daudzprocesu režīmam produkcijā. Natīvā Dependency Injection ļauj izolēti testēt jebkuru slāni bez sarežģītiem mock objektiem: autentifikācija, datubāzes sesija, rate limiting — katrs no tiem ir injicējama atkarība.

OpenAPI 3.1 dokumentācija tiek ģenerēta automātiski no type hints — Swagger UI un ReDoc ir pieejami adresēs `/docs` un `/redoc` izstrādes vidē. Pydantic v2 shēma (uz Rust balstīts validators) validē pieprasījumus un atbildes 10–20 reizes ātrāk nekā Pydantic v1. Jebkurš nederīgs lauks atgriež 422 ar skaidriem, lokalizētiem kļūdu ziņojumiem.

  • Natīvs async/await — neblokējošs I/O visām DB un HTTP darbībām
  • BackgroundTasks darbībām pēc atbildes (e-pasts, webhook, žurnāls)
  • Natīvs WebSocket atbalsts reāllaika funkcijām (čats, paziņojumi)
  • Rate limiting ar slowapi (balstīts uz limits) — pēc IP un pēc lietotāja
  • Middleware CORS, kompresija (gzip/brotli), request ID, laika mērījumi

PostgreSQL, SQLAlchemy un Alembic

Visām DB darbībām izmantojam SQLAlchemy 2.0 async (asyncpg draiveris). Modeļi tiek definēti ar Mapped tipiem — tipdrošiem, bez virknēm. Sarežģītus vaicājumus rakstām SQLAlchemy Core (pārbaudīti kompilēšanas laikā) vai tīrā SQL, izmantojot `text()` ar bind parametriem — nekad virkņu interpolāciju (pilnīga SQLi novēršana).

Alembic migrācijas tiek automātiski ģenerētas no modeļu izmaiņām un pirms pielietošanas pārskatītas manuāli. Katrai migrācijai ir notestētas `upgrade()` un `downgrade()`. Produkcijā migrācijas tiek palaistas CI vidē pirms izvietošanas — datubāze vienmēr ir sinhronizēta ar kodu. Savienojumu pūls (connection pooling) caur asyncpg ar katram pakalpojumam konfigurējamu pūla izmēru.

  • Row-level locking ar `SELECT ... FOR UPDATE` kritiskām vienlaicīgām darbībām
  • Pilnteksta meklēšana ar pg_trgm un tsvector — bez Elasticsearch vienkāršiem gadījumiem
  • JSONB daļēji strukturētiem datiem ar GIN indeksāciju
  • Sadalītās tabulas (partition tables) tabulām ar miljoniem rindu (logs, events)

Redis kešošana un horizontālā mērogošana

Redis 7 tiek izmantots lietojumprogrammas kešatmiņai (TTL katram endpoint), sesiju glabātuvei (JWT refresh tokens ar selektīvu atsaukšanu), pub/sub reāllaika notikumiem un rindām fona uzdevumiem (Celery vai ARQ). Kešošanas stratēģija ir cache-aside ar nepārprotamu atcelšanu — nevis akls TTL, kas var atdot novecojušus datus.

  • JWT autentifikācija ar access token (15 min) + Redis refresh token (7 dienas)
  • Celery + Redis broker asinhroniem uzdevumiem (PDF ģenerēšana, e-pasts, importi)
  • Health check endpoint `/health` ar DB, Redis statusu un izvietotās versijas informāciju
  • Strukturēta JSON žurnalēšana (structlog) — saderīga ar Loki/Datadog/ELK

Priekšrocības un ierobežojumi

Priekšrocības

  • ASGI veiktspēja, kas I/O ziņā salīdzināma ar Node.js un Go.
  • OpenAPI dokumentācija, kas automātiski ģenerēta no type hints.
  • Ātra Pydantic v2 validācija ar skaidrām 422 kļūdām.
  • Lasāms kods, Python ir pazīstams lielākajai daļai komandu.

Ierobežojumi

  • Python joprojām ir lēnāks par Go vai Rust CPU intensīvos uzdevumos.
  • async/await prasa disciplīnu — viens bloķējošs izsaukums bloķē visu event loop.
  • Jaunāka ekosistēma nekā Django funkcijām „viss iekļauts”.
  • Nesatur iebūvētu ORM vai admin — tos izvēlies atsevišķi.

Īss secinājums

Izvēlies FastAPI asinhroniem REST API, mikropakalpojumiem un SPA/mobilo lietotņu backend. Ļoti CPU intensīvām lietotnēm vai monolītiem ar gatavu admin piemērotāki var būt attiecīgi Go un Django.

Specifikāciju tabula

IespējaIerobežojums / slieksnisTipisks pielietojums
Vienlaicīgumsasync/await, neblokējošs I/OCPU intensīvam darbam nepieciešami atsevišķi workerAPI ar daudziem DB/HTTP izsaukumiem
LatentumsRedis kešatmiņa katram endpointPieaug, serializējot lielus payloadSaaS backend, mobilās lietotnes, reāllaiks
Validācija un dokumentācijaPydantic v2 + automātisks OpenAPI 3.1Sarežģīta shēma pagarina startēšanas laikuPubliskie API ar Swagger/ReDoc
Tipiskās izmaksasAtvērtā koda, darbojas uz 1 vCPUHorizontālai mērogošanai nepieciešami vairāk procesuNo MVP līdz produkcijai

FastAPI pret alternatīvām

KritērijsFastAPIDjango / Express
Async veiktspējaTeicama (natīvs ASGI)Django daļēji, Express laba
Automātiska OpenAPI dokumentācijaJā, no type hintsNepieciešamas papildu pakotnes
Iebūvēts admin / ORMNē (izvēlies atsevišķi)Django: jā; Express: nē

Biežāk uzdotie jautājumi

Vai FastAPI ir ātrāks par Django?

Jā, I/O ziņā. FastAPI darbojas async uz ASGI, tāpēc ar DB/HTTP izsaukumiem apstrādā daudz vairāk vienlaicīgu pieprasījumu nekā klasiskais sinhronais Django. Tomēr Django piedāvā vairāk iebūvētu funkciju.

Kam FastAPI nav piemērots?

Ļoti CPU intensīviem uzdevumiem (attēlu apstrāde, smagi skaitliski aprēķini) Python ir lēnāks par Go vai Rust; tos pārceļ uz atsevišķiem worker. Turklāt tam nav gatavas admin kā Django.

Vai FastAPI nepieciešams ORM?

Ne obligāti. Mēs izmantojam SQLAlchemy 2.0 async ar Alembic migrācijām, taču vari rakstīt arī tīru SQL. ORM nav iekļauts, tāpēc to izvēlies atkarībā no projekta.

Kā mērogot FastAPI backend?

Horizontāli: palaid vairākus Uvicorn procesus zem Gunicorn, aiz load balancer, ar Redis kešatmiņu un smagajiem uzdevumiem, pārceltiem uz Celery. Stateless dizains ļauj pēc vajadzības pievienot instances.

4b2b.net
Biznesa ekosistēma
4conta.ro
Grāmatvedība
4invoices.net
Rēķinu izrakstīšanas lietotne
4expenses.net
Izdevumu pārvaldība
4notify.net
Paziņojumi
4hosting.net
Hostings
4database.net
Datubāzes
4buildsite.net
Mājaslapu veidotājs
4myapp.net
Lietotņu veidotājs
4avatars.net
MI avatāri
4chaty.net
MI tērzēšanas robots
4webagency.net
Programma tīmekļa aģentūrām
4softedu.net
Mājaslapas izglītībai
4softcrm.net
CRM platforma
4softerp.net
ERP sistēma
4softhr.net
Personāla vadība
4mystaff.net
Darbinieku portāls
4myprojects.net
Projektu vadība
4mycontracts.net
Līgumi
4docs.net
Dokumentu pārvaldība
4appointments.net
Pieraksts
4marketingonline.net
Mārketings
4insurance.net
Apdrošināšana
4property.net
Nekustamais īpašums
4lawyers.net
Programma juristiem
4mygarage.net
Autoserviss
4driving.net
Autoskolas
4fleet.net
Autoparka vadība
4myevents.net
Pasākumi
4therapy.net
Terapija
4clinics.net
Klīnikas
4dental.net
Zobārstniecības klīnikas
4restaurants.net
Restorāni
4beautify.net
Skaistumkopšanas salons
4gym.net
Sporta klubi
4guards.net
Apsardzes uzņēmumi
4softvet.net
Veterinārās klīnikas
4softauto.net
Programmatūra auto biznesam
4construct.net
Būvniecības uzņēmumi
4marketplace.net
Tirdzniecības platforma
4shopy.net
Interneta veikals
4pricing.net
Cenu salīdzināšana
4salefood.net
Ēdiena piegāde
4rentify.net
Noma
4transports.net
Transports
4agencytravel.net
Ceļojumu aģentūra
4hotel.net
Viesnīcu vadība
4ong.net
NVO pārvaldība