Tehnologije

← Domov
Zaledje in API

Zaledje Python in FastAPI — sodobni in razširljivi API-ji

FastAPI je referenčno ogrodje Python za asinhrone REST API-je. Združuje izvorne type hints Pythona s samodejnim preverjanjem Pydantic, samodejno ustvarjeno dokumentacijo OpenAPI in asinhrono izvajanje na ASGI — brez žrtvovanja berljivosti kode.

FastAPI — asinhrono ogrodje Python na ASGI

FastAPI teče na Uvicornu (strežnik ASGI) z Gunicornom za več procesov v produkciji. Končne točke, ki berejo iz predpomnilnika Redis, se izognejo poizvedbam v zbirko podatkov. Izvorno vbrizgavanje odvisnosti (Dependency Injection) omogoča izolirano testiranje katere koli plasti brez zapletenih mockov: avtentikacija, seja zbirke podatkov, omejevanje hitrosti — vsako je vbrizgljiva odvisnost.

Dokumentacija OpenAPI 3.1 se samodejno ustvari iz type hints — Swagger UI in ReDoc sta v razvoju na voljo na `/docs` in `/redoc`. Pydantic v2 (z jedrom za preverjanje, napisanim v Rustu) preverja zahteve in odgovore. Vsako neveljavno polje vrne 422 z jasnimi, lokaliziranimi sporočili o napaki.

  • Izvorni async/await — neblokirajoči I/O pri vseh operacijah z zbirko in HTTP
  • BackgroundTasks za operacije po odgovoru (e-pošta, webhook, dnevnik)
  • Izvorna podpora za WebSocket pri funkcijah v realnem času (klepet, obvestila)
  • Omejevanje hitrosti s slowapi (temelji na limits) — na IP in na uporabnika
  • Middleware CORS, stiskanje (gzip/brotli), ID zahteve, merjenje časa

PostgreSQL, SQLAlchemy in Alembic

Za vse operacije z zbirko uporabljamo SQLAlchemy 2.0 async (gonilnik asyncpg). Modeli so definirani z Mapped tipi — tipsko varno, brez nizov. Kompleksne poizvedbe pišemo v SQLAlchemy Core (preverjeno ob prevajanju) ali v čistem SQL prek `text()` s parametri bind — nikoli z interpolacijo nizov (popolna preventiva pred SQLi).

Migracije Alembic se samodejno ustvarijo iz sprememb modela in pred uporabo ročno pregledajo. Vsaka migracija ima preizkušeni `upgrade()` in `downgrade()`. V produkciji migracije tečejo v CI pred namestitvijo — zbirka podatkov je vedno usklajena s kodo. Zbiranje povezav (connection pooling) prek asyncpg z velikostjo bazena, nastavljivo za vsako storitev.

  • Zaklepanje na ravni vrstic s `SELECT ... FOR UPDATE` za kritične sočasne operacije
  • Iskanje po celotnem besedilu s pg_trgm in tsvector — brez Elasticsearcha pri preprostih primerih
  • JSONB za napol strukturirane podatke z indeksiranjem GIN
  • Particionirane tabele za tabele z milijoni vrstic (dnevniki, dogodki)

Predpomnjenje z Redis in vodoravno skaliranje

Redis 7 uporabljamo za aplikacijski predpomnilnik (TTL na končno točko), shrambo sej (osvežilni žetoni JWT z izbirnim preklicem), pub/sub za dogodke v realnem času in čakalne vrste za opravila v ozadju (Celery ali ARQ). Strategija predpomnjenja je cache-aside z izrecno razveljavitvijo — ne slepi TTL, ki lahko streže zastarele podatke.

  • Avtentikacija JWT z dostopnim žetonom (15 min) + osvežilnim žetonom v Redisu (7 dni)
  • Celery + posrednik Redis za asinhrona opravila (ustvarjanje PDF, e-pošta, uvozi)
  • Končna točka za preverjanje zdravja `/health` s stanjem zbirke, Redisa in različico namestitve
  • Strukturirano beleženje JSON (structlog) — združljivo z Loki/Datadog/ELK

Prednosti in omejitve

Prednosti

  • Izvorni async/await na ASGI, z neblokirajočim I/O.
  • Samodejno ustvarjena dokumentacija OpenAPI iz type hints.
  • Hitro preverjanje Pydantic v2 z jasnimi napakami 422.
  • Berljiva koda, Python je znan večini ekip.

Omejitve

  • Python je pri procesorsko intenzivnih opravilih še vedno počasnejši od Goja ali Rusta.
  • async/await zahteva disciplino — en blokirajoč klic blokira celotno zanko dogodkov.
  • Ekosistem je mlajši od Djanga pri funkcijah »vse v enem«.
  • Ne vključuje vgrajenega ORM-ja ali administracije — izberete ju posebej.

Kratek povzetek

FastAPI izberite za asinhrone REST API-je, mikrostoritve in zaledja za SPA/mobilne aplikacije. Za skrajno procesorsko omejene aplikacije ali monolite z že pripravljeno administracijo sta primernejša Go oziroma Django.

Tabela specifikacij

ZmožnostOmejitev / pragTipična uporaba
Sočasnostasync/await, neblokirajoči I/OProcesorsko omejena opravila zahtevajo ločene delavceAPI-ji z veliko klici zbirke/HTTP
ZakasnitevPredpomnilnik Redis pred zbirko podatkov pri končnih točkah z veliko branjaRaste s serializacijo velikih podatkovnih obremenitevZaledje SaaS, mobilno, v realnem času
Preverjanje in dokumentacijaPydantic v2 + samodejni OpenAPI 3.1Kompleksna shema podaljša čas zagonaJavni API-ji s Swagger/ReDoc
Tipičen strošekOdprta koda, teče na 1 vCPUVodoravno skaliranje zahteva več procesovOd MVP do produkcije

FastAPI v primerjavi z alternativami

MeriloFastAPIDjango / Express
Asinhroni modelIzvorno (ASGI)Django delno, Express da
Samodejna dokumentacija OpenAPIDa, iz type hintsZahteva dodatne pakete
Vgrajena administracija / ORMNe (izberete posebej)Django: da; Express: ne

Pogosta vprašanja

Kakšna je razlika med FastAPI in Djangom?

FastAPI teče asinhrono na ASGI z neblokirajočim I/O, klasični Django pa zahteve obdeluje sinhrono. Django ima več vgrajenih funkcij, kot sta administracija in ORM.

Za kaj FastAPI ni primeren?

Pri procesorsko intenzivnih opravilih (obdelava slik, težki numerični izračuni) je Python počasnejši od Goja ali Rusta; ta prestavite na ločene delavce. In ne prinaša že pripravljene administracije kot Django.

Ali FastAPI potrebuje ORM?

Ni obvezno. Uporabljamo SQLAlchemy 2.0 async z Alembicom za migracije, lahko pa pišete čisti SQL. ORM ni vključen, zato ga izberete glede na projekt.

Kako skaliram zaledje FastAPI?

Vodoravno: poganjate več procesov Uvicorn pod Gunicornom, za porazdeljevalnikom obremenitve, s predpomnilnikom Redis in težkimi opravili, prestavljenimi na Celery. Zasnova brez stanja omogoča dodajanje instanc po potrebi.

4b2b.net
Poslovni ekosistem
4conta.ro
Računovodstvo
4invoices.net
Aplikacija za izdajanje računov
4expenses.net
Upravljanje stroškov
4notify.net
Obvestila
4hosting.net
Gostovanje
4database.net
Baze podatkov
4buildsite.net
Izdelava spletnih strani
4myapp.net
Izdelava aplikacij
4avatars.net
Avatarji z UI
4chaty.net
Klepetalni robot z UI
4webagency.net
Programska oprema za spletne agencije
4softedu.net
Spletne strani za izobraževanje
4softcrm.net
Platforma CRM
4softerp.net
Sistem ERP
4softhr.net
Upravljanje HR
4mystaff.net
Portal osebja
4myprojects.net
Upravitelj projektov
4mycontracts.net
Pogodbe
4docs.net
Upravljanje dokumentov
4appointments.net
Termini
4marketingonline.net
Marketing
4insurance.net
Zavarovanje
4property.net
Nepremičnine
4lawyers.net
Pravna programska oprema
4mygarage.net
Avtoservis
4driving.net
Avtošole
4fleet.net
Upravljanje voznega parka
4myevents.net
Dogodki
4therapy.net
Terapija
4clinics.net
Klinike
4dental.net
Zobne ordinacije
4restaurants.net
Restavracije
4beautify.net
Lepotni salon
4gym.net
Fitnes centri
4guards.net
Varnostna podjetja
4softvet.net
Veterinarske ambulante
4softauto.net
Programska oprema za avtomobilski posel
4construct.net
Gradbena podjetja
4marketplace.net
Tržnica
4shopy.net
Spletna trgovina
4pricing.net
Primerjava cen
4salefood.net
Dostava hrane
4rentify.net
Najem
4transports.net
Transport
4agencytravel.net
Potovalna agencija
4hotel.net
Upravljanje hotelov
4ong.net
Upravljanje NVO