Geekflare wordt ondersteund door ons publiek. We kunnen affiliate commissies verdienen met het kopen van links op deze site.
In Ontwikkeling Laatst bijgewerkt: 23 september 2023
Deel op:
Invicti beveiligingsscanner voor webtoepassingen - de enige oplossing die automatische verificatie van kwetsbaarheden levert met Proof-Based Scanning™.

In dit artikel presenteren we verschillende Python webservers die u kunt gebruiken om uw Python toepassingen te implementeren.

We beginnen met te begrijpen hoe webservers werken en wat de noodzaak is van server gateway interfaces. Daarna bespreken we de lijst van Python webservers met hun belangrijkste kenmerken. De meeste zijn beschikbaar als PyPI-pakketten die u kunt installeren en gebruiken in uw projecten.

Laten we beginnen!

Wat is een webserver?

Wanneer u een Python-applicatie ontwikkelt, gebruikt u de ontwikkelserver om uw app te testen. Als de ontwikkeling echter voltooid is, zult u uw app op een productieserver moeten implementeren. Naast verschillende lagen van toegevoegde functionaliteit moet een webserver de basisfunctionaliteit van een HTTP-server hebben.

python-web-server

De Python webserver moet HTTP-verzoeken (eenvoudige HTTP-verzoeken zoals GET, PUT en POST) van clients, zoals webbrowsers, kunnen verwerken en het antwoord terugsturen. Dit antwoord kan de HTTP-statuscode bevatten die aangeeft of het verzoek al dan niet met succes is verwerkt. Het kan bestaan uit HTML-webpagina’s en semigestructureerde gegevens zoals JSON, XML en meer.

ASGI vs. WSGI: Server Gateway Interfaces begrijpen

Stel dat u een Python-applicatie hebt ontwikkeld in een framework naar keuze, bijvoorbeeld Django of Flask. Een conventionele server is misschien niet in staat om de verzoeken aan de Python-toepassing te begrijpen en te verwerken. Hier komen server gateway-interfaces om de hoek kijken.

Deze gateway-interface kan een Web Server Gateway Interface(WSGI) of een Asynchronous Server Gateway Interface(ASGI) zijn. De webserver ontvangt een aanvraag van een client en stuurt deze door naar de server gateway interface. De interface (WSGI/ASGI) interageert met de Python-toepassing via een blootgelegde callable.

python-web-server-asgi-wsgi

De Web Server Gateway Interface(WSGI) behandelt verzoeken sequentieel. Als er meerdere langzame HTTP-verzoeken zijn, dan zullen deze de doorvoer beïnvloeden.

Asynchronous Server Gateway Interface, of ASGI, is een opvolger van WSGI en heeft de extra mogelijkheid om verzoeken asynchroon af te handelen.

Stel dat een verzoek dat momenteel wordt onderhouden een database read vereist (die mogelijk lang kan duren) en wacht op het antwoord. Wanneer het eerste verzoek wacht op een antwoord, kan ASGI een tweede inkomend verzoek afhandelen.

Dit in tegenstelling tot WSGI, waarbij het eerste verzoek verwerkt moet worden voordat het tweede verzoek kan worden verwerkt. Daarom kan het gebruik van ASGI resulteren in een hogere verwerkingscapaciteit. Met ASGI kunt u ook asynchrone Python-mogelijkheden binnen uw toepassing gebruiken.

Python webservers

Laten we nu een lijst maken van de webservers die u kunt gebruiken voor uw Python-toepassingen. We hebben ook bepaalde frameworks opgenomen die kant-en-klare ondersteuning bieden voor productieklare servers. Dit is geen volledige lijst, en de onderstaande aanbevelingen voor webservers staan niet in een bepaalde volgorde.

Uvicorn

Als u bekend bent met applicatieontwikkeling met FastAPI, dan bent u vast al Uvicorn tegengekomen, een webserverimplementatie. Uvicorn is een ASGI serverimplementatie voor Python.

python-web-server-uvicorn

Om Uvicorn en de bijbehorende afhankelijkheden te installeren met pip, voert u het volgende commando uit:

$ pip install uvicorn[standard] 
# omvat installatie van optionele en Cython-gebaseerde afhankelijkheden

Hieronder volgen de belangrijkste kenmerken van Uvicorn:

  • ASGI-implementatie
  • Ondersteuning voor het draaien van apps vanuit een asynchrone Python-omgeving
  • De command-line tool met een uitgebreide lijst opties
  • Ondersteunt het draaien van applicaties vanuit fabrieksfuncties
  • Biedt functies om server instanties programmatisch te besturen

Gunicorn

Gunicorn is een WSGI-server voor Python-applicaties, bekend om zijn geavanceerde procesmanagementfuncties.

gunicorn-python-web-server

Uvicorn geeft een Gunicorn worker class, waardoor u tegelijkertijd prestatie- en procesmanagementvoordelen kunt behalen. Deze documentatiepagina bevat details over het implementeren van Gunicorn.

Als u Python 3.5 en hoger heeft, kunt u Gunicorn installeren met pip:

$ pip install gunicorn

Hieronder volgen de belangrijkste kenmerken van Gunicorn:

  • Eenvoudig en snel
  • Compatibel met vele webframeworks
  • Ondersteuning voor gebruik met een HTTP proxy server
  • Geavanceerd procesbeheer

CherryPy

CherryPy is een Python webframework – net als Django, Flask en FastAPI, maar niet zo populair als deze frameworks. Met verschillende stabiele releases bestaat CherryPy al meer dan tien jaar en heeft het zich ontwikkeld tot een volwaardig framework. Het heeft ook een ondersteunende ontwikkelaarsgemeenschap.

cherrypy

U kunt de interessante Zen van CherryPy bekijken, die de essentie weergeeft dat CherryPy een eenvoudig en minimalistisch maar krachtig framework is.

CherryPy is een Python framework en geen webserver, maar het staat op onze lijst omdat het van nature een productieklasse server ondersteunt, in tegenstelling tot de meeste andere frameworks.

Om CherryPy te installeren en aan de slag te gaan, voert u het volgende uit:

$ pip install CherryPy

Dit zijn de belangrijkste kenmerken van CherryPy:

  • Pythonisch framework dat objectgeoriënteerde Python gebruikt; zeer geschikt voor beginners
  • Ondersteuning voor een productieklare HTTP-server, Cheroot
  • Gemakkelijker te leren dan andere webframeworks, zoals Django
  • Ondersteuning voor het bouwen en implementeren van eenvoudige webapps tot microservices

Daphne

Django is een van de populairste Python webframeworks. Als u toepassingen met Django hebt ontwikkeld, hebt u waarschijnlijk de webserver Daphne gebruikt. Daphne is één van de eerste ASGI server implementaties die gebruikt wordt als referentie voor ASGI server implementaties.

Daphne is beschikbaar als een PyPI pakket dat u kunt installeren met pip.

$ pip installeer daphne

Hier is een gedetailleerde tutorial die u door het bouwen van een full-stack productieklare Python applicatie leidt.

YouTube video

Hieronder volgen de belangrijkste kenmerken van Daphne:

  • Wijdverbreid toegepast in productieomgevingen
  • Referentie voor alle ASGI server implementaties
  • Ondersteuning voor HTTP, HTTP2 en WebSocket protocollen

Python Trio

Het Trio project heeft als doel om productie-grade asynchrone I/O mogelijkheden te bieden: ondersteuning voor parallelle I/O en concurrency. Dit project heeft ook verschillende web en HTTP Python bibliotheken.

U kunt de nieuwste versie van Trio (juni 2022) installeren vanaf PyPI.

$ pip installeer trio

Hier is een lijst met nuttige Trio-bibliotheken voor webprogrammering met Python:

  • hypercorn: Hypercorn is een ASGI-server die HTTP ondersteunt
  • muffin: Muffin is een ASGI web framework voor Python
  • startlette: Starlette is een lichtgewicht ASGI framework
  • trio-websocket: ondersteuning voor <a href="https://geekflare.com/websocket-servers/">WebSocket server</a> en client</li><li><code>httpx: HTTP-client voor Python

Twisted Web

Twisted is een framework voor Python toepassingen. Dit event-driven framework bevat een module voor webprogrammering genaamd twisted.web.

U kunt Twisted en de bijbehorende modules installeren met pip:

$ pip install Twisted

Hieronder vindt u de belangrijkste kenmerken van Twisted:

  • Ontwikkelaarsvriendelijke functies zoals unit testing en statische codecontrole
  • twisted.web biedt een WSGI server en ondersteuning voor HTTP clients en servers

AIOHTTP

AIOHTTP is een Python bibliotheek die mogelijkheden aan client- en serverzijde biedt via de client en server API’s.

Hier is een nuttige video die de asynchrone programmeermogelijkheden aan de clientkant uitlegt om verzoeken naar API’s aanzienlijk te versnellen.

YouTube video

Dit zijn de belangrijkste kenmerken van AIOHTTP:

  • Ondersteuning voor zowel de HTTP-server- als -clientfunctionaliteit
  • Ondersteuning voor loggen om het debuggen te vergemakkelijken; biedt loggen voor een client, server, web sockets en meer
  • Ondersteuning voor testen via de pytest-plugin voor testen: pytest-aiohttp, die beschikbaar is als PyPI-pakket

Tornado

Tornado is een ander Python webraamwerk dat asynchrone netwerken ondersteunt. In de afgelopen jaren zijn er veel stabiele versies van Tornado uitgebracht – de meest recente versie 6.2 is uitgebracht in juli 2022. Momenteel ondersteunt Tornado Python 3.7 en hoger.

Zoals de meeste pakketten in deze lijst, kan Tornado ook geïnstalleerd worden met pip:

$ pip install tornado

Hieronder volgen de belangrijkste kenmerken van Tornado:

  • Ondersteuning voor HTTP-server tornado.httpserver en client
  • Schaalbaar en gebruikt non-blocking netwerk I/O
  • Zeer geschikt voor toepassingen die connectiviteit vereisen voor een aanzienlijk langer tijdsinterval
  • Hulpprogramma’s voor logboekregistratie, eenheidstesten en meer
  • Naadloze integratie met diensten voor authenticatie

Meinheld

Meinheld is een WSGI-server voor Python. Het gebruikt en bouwt bestaande bibliotheken voor eventafhandeling en HTTP-verzoekverwerking.

U kunt Meinheld installeren met pip:

$ pip install meinheld

Enkele kenmerken van Meinheld:

  • Gebruikt http-parser bibliotheek om inkomende HTTP-verzoeken af te handelen
  • Bouwt bovenop de picoev bibliotheek voor het afhandelen van gebeurtenissen

Conclusie

Ik hoop dat u deze lijst van Python webservers nuttig vond. Probeer ze zeker uit in uw toekomstige projecten. We hebben de belangrijkste functies opgesomd; om de afhankelijkheden en hoe ze werken volledig te begrijpen, zult u ze in uw toepassingen moeten gebruiken. 👩🏽‍💻

Als u uw Python-vaardigheden wilt verbeteren, kijk dan eens naar Geekflare’s bibliotheek met Python-tutorials. Veel codeerplezier!

  • Bala Priya C
    Auteur
Met dank aan onze sponsors
Meer geweldige lezingen over ontwikkeling
Energie voor uw bedrijf
Enkele van de tools en services om je bedrijf te helpen groeien.
  • Invicti maakt gebruik van Proof-Based Scanning™ om de geïdentificeerde kwetsbaarheden automatisch te verifiëren en binnen enkele uren bruikbare resultaten te genereren.
    Probeer Invicti
  • Web scraping, residentiële proxy, proxy manager, web unlocker, zoekmachine crawler en alles wat je nodig hebt om webgegevens te verzamelen.
    Probeer Brightdata
  • Monday.com is een alles-in-één werk OS om je te helpen bij het beheren van projecten, taken, werk, verkoop, CRM, operaties, workflows en meer.
    Probeer maandag
  • Intruder is een online kwetsbaarhedenscanner die zwakke plekken in de cyberbeveiliging van uw infrastructuur vindt om kostbare datalekken te voorkomen.
    Probeer indringer