Deployen met Gunicorn en Uvicorn
Leer hoe u FastAPI in productie implementeert met Gunicorn als processmanager en Uvicorn-workers.
Deployen met Gunicorn en Uvicorn is een gratis Bootcamp backendontwikkeling met FastAPI-les op CoddyKit. Dit is les 2 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Bootcamp backendontwikkeling met FastAPI. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Bootcamp backendontwikkeling met FastAPI bevat in totaal 4 lessen.
Van ontwikkeling naar productie
Wanneer u een FastAPI-app ontwikkelt, voert u deze vaak uit met een eenvoudige opdracht zoals uvicorn main:app --reload.
Dit is uitstekend voor ontwikkeling, omdat uw server automatisch opnieuw wordt gestart wanneer u wijzigingen aanbrengt. Het is echter niet geschikt voor productieomgevingen.
Waarom? Eén proces is niet robuust of schaalbaar. Als het crasht, valt uw volledige API uit! In productie zijn stabiliteit, prestaties en fouttolerantie nodig.
Uvicorn: het ASGI-hart
FastAPI is een ASGI-framework. ASGI staat voor Asynchronous Server Gateway Interface, een standaard waarmee Python-webservers communiceren met asynchrone webtoepassingen.
Uvicorn is een razendsnelle implementatie van een ASGI-server. Hiermee kan uw FastAPI-toepassing verzoeken asynchroon en efficiënt verwerken.
Beschouw Uvicorn als de motor die uw FastAPI-auto aandrijft. De motor is snel, maar heeft uit zichzelf slechts één bestuurder (proces).
Uvicorn rechtstreeks uitvoeren
Hier ziet u een eenvoudige FastAPI-toepassing. Om deze rechtstreeks met Uvicorn uit te voeren, zoals u dat tijdens de ontwikkeling zou kunnen doen, gebruikt u een opdracht in uw terminal.
Met de opdracht uvicorn main:app --host 0.0.0.0 --port 8000 vertelt u Uvicorn het object app uit het bestand main.py uit te voeren, zodat het op alle netwerkinterfaces via poort 8000 toegankelijk is.
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Hello from FastAPI!"}
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)Productiebeperkingen van Uvicorn
Hoewel Uvicorn uitstekend is, is het rechtstreeks uitvoeren ervan (vooral met --reload) niet ideaal voor productie, omdat:
- Eén proces: Het wordt doorgaans als één proces uitgevoerd, waardoor het slechts één processorkern kan gebruiken.
- Geen beheer van werkprocessen: Als dat ene proces crasht, stopt uw API volledig.
- Geen procesbewaking: Uvicorn start gecrashte werkprocessen niet automatisch opnieuw en beheert geen meerdere exemplaren voor taakverdeling.
Voor productie hebben we iets nodig dat de werkprocessen van Uvicorn beheert.
Gunicorn: de robuuste beheerder
Maak kennis met Gunicorn (Green Unicorn)! Gunicorn is een WSGI HTTP-server die klaar is voor productie en ook ASGI-toepassingen zoals FastAPI kan beheren met behulp van specifieke werkprocesklassen.
De belangrijkste taak ervan is optreden als procesbeheerder. Het start meerdere werkprocessen en houdt toezicht daarop, waarbij binnenkomende verzoeken over deze processen worden verdeeld.
Beschouw Gunicorn als de chef van de pitcrew, die ervoor zorgt dat al uw Uvicorn-motoren soepel draaien en ze vervangt als er één uitvalt.
Het krachtige duo: Gunicorn en Uvicorn
De aanbevolen manier om FastAPI in productie te implementeren is Gunicorn te combineren met Uvicorn-workers.
Zo werkt het:
- Gunicorn (hoofdproces): Luistert naar binnenkomende verzoeken en verdeelt deze. Het houdt ook toezicht op zijn workers.
- Uvicorn (workerprocessen): Gunicorn start meerdere Uvicorn-instanties. Elke Uvicorn-worker voert je FastAPI-toepassing uit.
Deze opzet biedt betere prestaties, fouttolerantie en een efficiënter gebruik van resources.
Gunicorn en Uvicorn in actie
Om dezelfde FastAPI-app met Gunicorn en Uvicorn-workers uit te voeren, gebruik je een opdracht zoals deze. Deze opzet is veel robuuster voor productie.
Hier betekent -w 4 4 workerprocessen en geeft -k uvicorn.workers.UvicornWorker aan dat Gunicorn Uvicorn-workers moet gebruiken.
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Hello from FastAPI!"}
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)Het aantal workers optimaliseren
Bepalen hoeveel Gunicorn-workers je gebruikt, is cruciaal voor de prestaties. Een veelgebruikte vuistregel voor CPU-gebonden toepassingen is (2 * CPU_CORES) + 1.
Op een server met 4 CPU-cores kun je bijvoorbeeld beginnen met (2 * 4) + 1 = 9 workers. Hierdoor kunnen sommige workers I/O afhandelen terwijl andere CPU-intensieve taken uitvoeren.
Houd altijd het resourcegebruik van je server (CPU, RAM) in de gaten om dit aantal af te stemmen op de belasting van jouw specifieke toepassing.
Je configuratie beveiligen
Hardcode in productie nooit gevoelige informatie, zoals databasegegevens of API-sleutels, rechtstreeks in je code.
Gebruik in plaats daarvan omgevingsvariabelen. Zo blijven je geheimen buiten je codebase en wordt je toepassing draagbaarder en veiliger.
FastAPI en Pydantic (dat FastAPI gebruikt) bieden uitstekende ondersteuning voor het laden van instellingen uit omgevingsvariabelen, vaak via Pydantics BaseSettings.
Implementatiecontrole
Test je begrip van de rollen van Gunicorn en Uvicorn bij een FastAPI-implementatie in productie.
Samenvatting: robuuste implementatie
Je hebt geleerd hoe je FastAPI-toepassingen voor productie implementeert met de krachtige combinatie van Gunicorn en Uvicorn.
- Uvicorn is de ASGI-server die je FastAPI-app uitvoert.
- Gunicorn is de procesbeheerder die toezicht houdt op meerdere Uvicorn-workers.
- Deze opzet biedt schaalbaarheid, fouttolerantie en een efficiënter gebruik van resources.
Vergeet niet het aantal workers te optimaliseren en altijd omgevingsvariabelen te gebruiken voor gevoelige configuratie. Vervolgens kun je cloudimplementatiestrategieën verkennen!
Leer Bootcamp backendontwikkeling met FastAPI met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 21
- Lessen
- 84
Veelgestelde vragen
Is de les “Deployen met Gunicorn en Uvicorn” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Bootcamp backendontwikkeling met FastAPI, waaronder “Deployen met Gunicorn en Uvicorn”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Bootcamp backendontwikkeling met FastAPI bevat in totaal 4 lessen.
Wat leer ik in “Deployen met Gunicorn en Uvicorn”?
Leer hoe u FastAPI in productie implementeert met Gunicorn als processmanager en Uvicorn-workers. Je oefent met Bootcamp backendontwikkeling met FastAPI door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Bootcamp backendontwikkeling met FastAPI te beginnen?
Ervaring vooraf is niet nodig. Bootcamp backendontwikkeling met FastAPI op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.
Hoe lang duurt de les “Deployen met Gunicorn en Uvicorn”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Bootcamp backendontwikkeling met FastAPI?
Ja. Elke les over Bootcamp backendontwikkeling met FastAPI bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- FastAPI-applicaties containeriseren
- Deployen met Gunicorn en Uvicorn
- Cloudimplementatiestrategieën
- Omgevingsvariabelen en secrets beheren