Tækni

← Heim
Bakendi & API

Python og FastAPI bakendi — nútímalegt og skalanlegt API

FastAPI er leiðandi Python-rammi fyrir ósamstillt REST API. Hann sameinar innbyggðar type hints í Python við sjálfvirka Pydantic-staðfestingu, sjálfkrafa útbúin OpenAPI-skjöl og ASGI-afköst sambærileg við Node.js — án þess að fórna læsileika kóðans.

FastAPI — hraður Python-rammi

FastAPI keyrir á Uvicorn (ASGI-þjóni) með Gunicorn fyrir fjölferla keyrslu í framleiðslu. Einfaldur endapunktur sem les úr Redis-skyndiminni þarf ekki að sækja gögn í gagnagrunninn í hvert skipti. Innbyggð Dependency Injection gerir kleift að prófa hvaða lag sem er í einangrun án flókinna eftirlíkinga: auðkenning, gagnagrunnslota, hraðatakmörkun — hvert um sig er innsprautanleg háð eining.

OpenAPI 3.1-skjölin verða til sjálfkrafa úr type hints — Swagger UI og ReDoc eru aðgengileg á `/docs` og `/redoc` í þróun. Pydantic v2-skema (staðfestir skrifaður í Rust) staðfestir beiðnir og svör hraðar en Pydantic v1. Hvert ógilt svið skilar 422 með skýrum, staðfærðum villuskilaboðum.

  • async/await innbyggt — óhindrað I/O í öllum gagnagrunns- og HTTP-aðgerðum
  • BackgroundTasks fyrir aðgerðir eftir svar (tölvupóstur, webhook, skráning)
  • Innbyggður WebSocket-stuðningur fyrir rauntímavirkni (spjall, tilkynningar)
  • Hraðatakmörkun með slowapi (byggt á limits) — á hvert IP og hvern notanda
  • Millihugbúnaður: CORS, þjöppun (gzip/brotli), request ID, tímamæling

PostgreSQL, SQLAlchemy og Alembic

Við notum SQLAlchemy 2.0 async (asyncpg-rekill) fyrir allar gagnagrunnsaðgerðir. Líkönin eru skilgreind með Mapped-tegundum — tegundaörugg, án strengja. Flóknar fyrirspurnir eru skrifaðar í SQLAlchemy Core (athugað við þýðingu) eða hreinu SQL með `text()` og bundnum breytum — aldrei strengjainnskot (full vörn gegn SQLi).

Alembic-yfirfærslur eru búnar til sjálfkrafa út frá breytingum á líkönum og yfirfarnar handvirkt áður en þær eru keyrðar. Hver yfirfærsla hefur `upgrade()` og `downgrade()` sem hafa verið prófuð. Í framleiðslu keyra yfirfærslur í CI fyrir útgáfu — gagnagrunnurinn er alltaf í samræmi við kóðann. Tengipúlun í gegnum asyncpg með stillanlegri púlstærð fyrir hverja þjónustu.

  • Raðalæsing með `SELECT ... FOR UPDATE` fyrir mikilvægar samhliða aðgerðir
  • Fulltextaleit með pg_trgm og tsvector — án Elasticsearch í einföldum tilvikum
  • JSONB fyrir hálfskipulögð gögn með GIN-vísitölu
  • Skipt töflur (partition tables) fyrir töflur með milljónum raða (annálar, atburðir)

Redis-skyndiminni og lárétt skölun

Redis 7 er notað fyrir skyndiminni forritsins (TTL fyrir hvern endapunkt), lotugeymslu (JWT refresh tokens með sértækri afturköllun), pub/sub fyrir rauntímaatburði og biðraðir fyrir bakgrunnsverk (Celery eða ARQ). Skyndiminnisaðferðin er cache-aside með skýrri ógildingu — ekki blint TTL sem getur borið fram úrelt gögn.

  • JWT-auðkenning með access token (15 mín) + refresh token í Redis (7 dagar)
  • Celery + Redis-miðlari fyrir ósamstillt verk (PDF-gerð, tölvupóstur, innflutningur)
  • Heilsuskoðunarendapunktur `/health` með stöðu gagnagrunns, Redis og útgáfu
  • Skipulögð JSON-skráning (structlog) — samhæf við Loki/Datadog/ELK

Kostir og takmarkanir

Kostir

  • ASGI-afköst sambærileg við Node.js og Go í I/O.
  • OpenAPI-skjöl búin til sjálfkrafa úr type hints.
  • Hröð Pydantic v2-staðfesting með skýrum 422-villum.
  • Læsilegur kóði, Python er flestum teymum kunnuglegt.

Takmarkanir

  • Python er áfram hægara en Go eða Rust í örgjörvafrekum verkum.
  • async/await krefst aga — eitt hindrandi kall stöðvar allt event loop.
  • Yngra vistkerfi en Django fyrir innbyggða eiginleika.
  • Inniheldur hvorki ORM né stjórnborð — þú velur þau sérstaklega.

Stutt niðurstaða

Veldu FastAPI fyrir ósamstillt REST API, örþjónustur og bakenda fyrir SPA/farsíma. Fyrir mjög örgjörvafrek forrit eða einlitar lausnir með tilbúnu stjórnborði geta Go og Django hentað betur.

Tækniforskriftir

GetaTakmörk / þröskuldurDæmigerð notkun
Samhliða vinnslaasync/await, óhindrað I/OÖrgjörvafrek verk þurfa aðskilda vinnsluferlaAPI með mörgum gagnagrunns-/HTTP-köllum
SvartímiRedis-skyndiminni fyrir endurteknar fyrirspurnirEykst með raðgerð stórra gagnahlaðaSaaS-bakendi, farsímar, rauntími
Staðfesting & skjölPydantic v2 + OpenAPI 3.1 sjálfvirktFlókin skema lengir ræsitímaOpin API með Swagger/ReDoc
Dæmigerður kostnaðurOpinn hugbúnaður, keyrir á 1 vCPULárétt skölun krefst fleiri ferlaFrá MVP til framleiðslu

FastAPI samanborið við aðra kosti

ViðmiðFastAPIDjango / Express
Ósamstillt afköstFramúrskarandi (innbyggt ASGI)Django að hluta, Express góð
Sjálfvirk OpenAPI-skjölJá, úr type hintsKrefst aukapakka
Innbyggt stjórnborð / ORMNei (þú velur sérstaklega)Django: já; Express: nei

Algengar spurningar

Er FastAPI hraðara en Django?

Já í I/O. FastAPI keyrir ósamstillt á ASGI og ræður því við mun fleiri samhliða beiðnir með gagnagrunns-/HTTP-köllum en klassískt samstillt Django. Django hefur hins vegar fleiri innbyggða eiginleika.

Hvað hentar FastAPI ekki fyrir?

Fyrir mjög örgjörvafrek verk (myndvinnsla, þung talnareikningur) er Python hægara en Go eða Rust; þau eru færð yfir á aðskilda vinnsluferla. Og hann kemur ekki með tilbúið stjórnborð eins og Django.

Þarf FastAPI ORM?

Ekki nauðsynlega. Við notum SQLAlchemy 2.0 async með Alembic fyrir yfirfærslur, en þú getur skrifað hreint SQL. ORM fylgir ekki með, svo þú velur það eftir verkefninu.

Hvernig skala ég FastAPI-bakenda?

Lárétt: þú keyrir fleiri Uvicorn-ferla undir Gunicorn, á bak við álagsjafnara, með Redis-skyndiminni og þung verk færð yfir á Celery. Ríkisfrjáls hönnun gerir kleift að bæta við tilvikum eftir þörfum.

4b2b.net
Viðskiptavistkerfi
4conta.ro
Bókhald
4invoices.net
Reikningagerð
4expenses.net
Útgjaldastjórnun
4notify.net
Tilkynningar
4hosting.net
Hýsing
4database.net
Gagnagrunnar
4buildsite.net
Vefsíðugerð
4myapp.net
Forritasmíði
4avatars.net
Gervigreindaravatarar
4chaty.net
Gervigreindarspjallmenni
4webagency.net
Hugbúnaður fyrir vefstofur
4softedu.net
Vefsíður fyrir menntun
4softcrm.net
CRM-vettvangur
4softerp.net
ERP-kerfi
4softhr.net
Mannauðsstjórnun
4mystaff.net
Starfsmannagátt
4myprojects.net
Verkefnastjórnun
4mycontracts.net
Samningar
4docs.net
Skjalastjórnun
4appointments.net
Tímabókanir
4marketingonline.net
Markaðssetning
4insurance.net
Tryggingar
4property.net
Fasteignir
4lawyers.net
Hugbúnaður fyrir lögmenn
4mygarage.net
Bílaverkstæði
4driving.net
Ökuskólar
4fleet.net
Flotastjórnun
4myevents.net
Viðburðir
4therapy.net
Meðferðarstofur
4clinics.net
Læknastofur
4dental.net
Tannlæknastofur
4restaurants.net
Veitingastaðir
4beautify.net
Snyrtistofur
4gym.net
Líkamsræktarstöðvar
4guards.net
Öryggisfyrirtæki
4softvet.net
Dýralæknastofur
4softauto.net
Hugbúnaður fyrir bílgreinina
4construct.net
Byggingarfyrirtæki
4marketplace.net
Markaðstorg
4shopy.net
Netverslun
4pricing.net
Verðsamanburður
4salefood.net
Matarsending
4rentify.net
Útleiga
4transports.net
Flutningar
4agencytravel.net
Ferðaskrifstofa
4hotel.net
Hótelstjórnun
4ong.net
Stjórnun félagasamtaka