Technológiák

← Főoldal
Backend és API

Python és FastAPI backend — modern, skálázható API-k

Az aszinkron REST API-k terén a FastAPI a Python etalonja. Natív Python type hint-ekre épít, ehhez automatikus Pydantic-validációt, magától előálló OpenAPI-dokumentációt és Node.js szintű ASGI-teljesítményt ad — anélkül, hogy a kód olvashatóságát feláldozná.

FastAPI — gyors Python-keretrendszer

A FastAPI Uvicornon (ASGI-szerver) fut, éles környezetben Gunicornnal, hogy több folyamaton dolgozzon. Egy egyszerű végpont, amely a Redis-gyorsítótárból olvas, átlagos hardveren válaszol. A beépített Dependency Injection minden réteget önmagában, bonyolult mockolás nélkül tesztelhetővé tesz: a hitelesítés, az adatbázis-munkamenet és a rate limiting egyaránt injektálható függőség.

Az OpenAPI 3.1 dokumentáció a type hint-ekből magától áll elő — fejlesztés közben a Swagger UI a `/docs`, a ReDoc a `/redoc` címen érhető el. A Pydantic v2 séma (Rust nyelven írt validátorral) gyorsabban ellenőrzi a kéréseket és a válaszokat, mint a Pydantic v1. Minden hibás mező 422-es választ vált ki, világos, honosított hibaüzenettel.

  • Natív async/await — nem blokkoló I/O minden adatbázis- és HTTP-műveletnél
  • BackgroundTasks a válasz utáni munkához (e-mail, webhook, naplózás)
  • Natív WebSocket-támogatás a valós idejű funkciókhoz (chat, értesítések)
  • Rate limiting a slowapi csomaggal (a limits alapján) — IP-nként és felhasználónként
  • Middleware CORS-hoz, tömörítéshez (gzip/brotli), request ID-hoz és időméréshez

PostgreSQL, SQLAlchemy és Alembic

Minden adatbázis-műveletet SQLAlchemy 2.0 async (asyncpg-illesztőprogram) végez. A modelleket Mapped típusokkal írjuk le — típusbiztosan, sztringek nélkül. Az összetettebb lekérdezések SQLAlchemy Core-ban készülnek (amit a fordítás ellenőriz), vagy tiszta SQL-ként a `text()` függvényen át, kötött paraméterekkel — sosem sztringbehelyettesítéssel, így az SQL-injekció teljesen kizárt.

Az Alembic-migrációk a modellek változásából automatikusan állnak elő, alkalmazás előtt pedig kézi ellenőrzésen mennek át. Minden migrációnak letesztelt `upgrade()` és `downgrade()` függvénye van. Éles környezetben a migrációk a CI-ban futnak le a telepítés előtt — az adatbázis így mindig együtt mozog a kóddal. A kapcsolatkészletet az asyncpg kezeli, szolgáltatásonként állítható mérettel.

  • Sorszintű zárolás `SELECT ... FOR UPDATE` utasítással a kritikus párhuzamos műveletekhez
  • Teljes szövegű keresés pg_trgm-mel és tsvectorral — egyszerűbb esetekben Elasticsearch nélkül
  • JSONB a félig strukturált adatokhoz, GIN-indexszel
  • Particionált táblák a többmilliós sorszámhoz (naplók, események)

Redis-gyorsítótár és vízszintes skálázás

A Redis 7 alkalmazásszintű gyorsítótárként (végpontonkénti TTL-lel), munkamenet-tárolóként (JWT frissítő tokenek szelektív visszavonással), a valós idejű események pub/sub csatornájaként és a háttérfeladatok sorául szolgál (Celery vagy ARQ). A gyorsítótárazás cache-aside elven, kifejezett érvénytelenítéssel működik — nem vak TTL-lel, amely elavult adatot szolgálna ki.

  • JWT-hitelesítés hozzáférési tokennel (15 perc) és Redisben tárolt frissítő tokennel (7 nap)
  • Celery Redis brókerrel az aszinkron feladatokhoz (PDF-előállítás, e-mail, importálás)
  • `/health` állapotvégpont az adatbázis, a Redis és a telepített verzió állapotával
  • Strukturált JSON-naplózás (structlog) — a Lokival, a Datadoggal és az ELK-val is működik

Előnyök és korlátok

Előnyök

  • I/O-terhelésnél Node.js és Go szintjén mozgó ASGI-teljesítmény.
  • A type hint-ekből automatikusan előálló OpenAPI-dokumentáció.
  • Gyors Pydantic v2 validáció, világos 422-es hibákkal.
  • Olvasható kód; a Python a legtöbb csapatnak ismerős.

Korlátok

  • CPU-igényes feladatoknál a Python továbbra is lassabb a Gónál vagy a Rustnál.
  • Az async/await fegyelmet kíván — egyetlen blokkoló hívás megbénítja az egész eseményhurkot.
  • A batteries-included funkciók terén fiatalabb az ökoszisztéma, mint a Django esetében.
  • Sem ORM, sem admin felület nincs benne — mindkettőt külön kell választani.

Rövid értékelés

A FastAPI aszinkron REST API-khoz, mikroszolgáltatásokhoz, valamint SPA- és mobilalkalmazások backendjéhez való. Kifejezetten CPU-igényes alkalmazásokhoz a Go, kész admin felülettel bíró monolitokhoz pedig a Django illik jobban.

Specifikációs táblázat

KépességKorlát / küszöbJellemző felhasználás
Párhuzamosságasync/await, nem blokkoló I/OA CPU-igényes munkához külön worker kellSok adatbázis- és HTTP-hívást indító API-k
KésleltetésVégpontonként Redis-gyorsítótárralNagy payloadok szerializálásával nőSaaS-, mobil- és valós idejű backendek
Validáció és dokumentációPydantic v2 és automatikus OpenAPI 3.1Az összetett sémák lassítják az indulástNyilvános API-k Swaggerrel vagy ReDoc-kal
Jellemző költségNyílt forráskódú, 1 vCPU-n is elfutA vízszintes skálázáshoz több folyamat kellAz MVP-től az éles üzemig

A FastAPI és az alternatívái

SzempontFastAPIDjango / Express
Aszinkron teljesítményKiváló (natív ASGI)Django részben, Express jól
Automatikus OpenAPI-dokumentációIgen, a type hint-ekbőlTovábbi csomagokat igényel
Beépített admin / ORMNincs (külön kell választani)Django: van; Express: nincs

Gyakori kérdések

Gyorsabb a FastAPI a Djangónál?

I/O esetén igen. A FastAPI aszinkron módon, ASGI-n fut, ezért adatbázis- vagy HTTP-hívásokat végző kérésekből sokkal többet szolgál ki párhuzamosan, mint a klasszikus, szinkron Django. Cserébe a Django több funkciót hoz magával alapból.

Mire nem alkalmas a FastAPI?

Erősen CPU-igényes feladatokra (képfeldolgozás, nehéz számítások) a Python lassabb a Gónál vagy a Rustnál; az ilyen munkát külön workerekre érdemes átvinni. Ráadásul a FastAPI nem hoz kész admin felületet, ahogy a Django igen.

Szüksége van a FastAPI-nak ORM-re?

Nem feltétlenül. Mi SQLAlchemy 2.0 asyncot használunk Alembic-migrációkkal, de tiszta SQL-lel is lehet dolgozni. ORM nincs benne, így a projekthez illőt lehet választani.

Hogyan skálázható egy FastAPI-backend?

Vízszintesen: több Uvicorn-folyamat fut Gunicorn alatt, terheléselosztó mögött, Redis-gyorsítótárral, a nehéz feladatokat pedig a Celery veszi át. Az állapotmentes felépítés miatt szükség esetén egyszerűen bővíthető újabb példányokkal.

4b2b.net
Üzleti ökoszisztéma
4conta.ro
Könyvelés
4invoices.net
Számlázó alkalmazás
4expenses.net
Költségkezelés
4notify.net
Értesítések
4hosting.net
Tárhely
4database.net
Adatbázisok
4buildsite.net
Weboldal-készítő
4myapp.net
Alkalmazás-készítő
4avatars.net
MI-avatárok
4chaty.net
MI-chatbot
4webagency.net
Webügynökségi szoftver
4softedu.net
Oktatási weboldalak
4softcrm.net
CRM platform
4softerp.net
ERP rendszer
4softhr.net
HR-menedzsment
4mystaff.net
Munkavállalói portál
4myprojects.net
Projektmenedzser
4mycontracts.net
Szerződések
4docs.net
Dokumentumkezelés
4appointments.net
Időpontfoglalás
4marketingonline.net
Marketing
4insurance.net
Biztosítás
4property.net
Ingatlanok
4lawyers.net
Jogi szoftver
4mygarage.net
Autószerviz
4driving.net
Autósiskolák
4fleet.net
Flottakezelés
4myevents.net
Események
4therapy.net
Terápia
4clinics.net
Klinikák
4dental.net
Fogorvosi rendelők
4restaurants.net
Éttermek
4beautify.net
Szépségszalon
4gym.net
Edzőtermek
4guards.net
Őrző-védő cégek
4softvet.net
Állatorvosi rendelők
4softauto.net
Szoftver autóipari vállalkozásoknak
4construct.net
Építőipari cégek
4marketplace.net
Piactér
4shopy.net
Webáruház
4pricing.net
Árösszehasonlítás
4salefood.net
Ételszállítás
4rentify.net
Bérlés
4transports.net
Szállítás
4agencytravel.net
Utazási iroda
4hotel.net
Szállodakezelés
4ong.net
NGO-kezeles