9 Python webszerver, amelyet kipróbálhat a következő projektjéhez

Ebben a listában számos Python webszervert mutatunk be, amelyek segítségével telepítheti Python alkalmazásait.

Kezdjük azzal, hogy megértjük a webszerverek működését és a szerverátjáró felületek szükségességét. Ezután áttekintjük a Python webszerverek listáját a legfontosabb jellemzőikkel együtt. Legtöbbjük PyPI-csomagként érhető el, amelyet telepíthet és elkezdhet használni projektjeiben.

Kezdjük!

Mi az a webszerver?

Python-alkalmazások fejlesztésekor a fejlesztői kiszolgálót kell használnia az alkalmazás tesztelésére. A fejlesztés befejeztével azonban üzembe kell helyeznie az alkalmazást egy éles szintű kiszolgálón. A felül több rétegű hozzáadott funkcionalitás mellett a webszervernek rendelkeznie kell a HTTP-kiszolgáló alapvető funkcióival.

A Python webszervernek képesnek kell lennie az ügyfelektől, például a webböngészőktől érkező HTTP-kérések (egyszerű HTTP-kérések, például GET, PUT és POST) kezelésére, és vissza kell adnia a választ. Ez a válasz tartalmazhatja a HTTP állapotkódot, amely jelzi, hogy a kérés feldolgozása sikeres volt-e vagy sem. Ez állhat HTML-weboldalakból és félig strukturált adatokból, például JSON-ból, XML-ből és egyebekből.

ASGI vs. WSGI: A szerverátjáró interfészek megértése

Tegyük fel, hogy kifejlesztett egy Python-alkalmazást egy választott keretrendszerben, például Django-ban vagy Flask-ban. Előfordulhat, hogy egy hagyományos szerver nem képes megérteni és feldolgozni a Python-alkalmazáshoz intézett kéréseket. Itt lépnek életbe a szerverátjáró interfészek.

Ez az átjáró felület lehet webszerver átjáró interfész (WSGI) vagy aszinkron szerver átjáró interfész (ASGI). A webszerver kérést kap egy klienstől, amelyet azután átirányít a szerver átjáró felületére. Az interfész (WSGI/ASGI) a Python-alkalmazással kölcsönhatásba lép egy nyitott hívható felületen.

A Web Server Gateway Interface (WSGI) szekvenciálisan kezeli a kéréseket. Ha több lassú HTTP-kérés van, akkor ezek befolyásolják az átviteli sebességet.

Az Asynchronous Server Gateway Interface vagy ASGI a WSGI utódja, és további képességgel rendelkezik a kérések aszinkron kezelésére.

  A Google Meet Whiteboard használata megbeszéléseken

Tegyük fel, hogy egy jelenleg kiszolgált kérés adatbázis-olvasást igényel (ami hosszú ideig tarthat), és a válaszra vár. Amikor az első kérés válaszra vár, az ASGI kezelni tudja a második bejövő kérést.

Ez ellentétben áll a WSGI-vel, ahol az első kérést a második kérelemhez kell feldolgozni. Ezért az ASGI használata megnövekedett átviteli sebességet eredményezhet. Az ASGI emellett lehetővé teszi az aszinkron Python-képességek használatát az alkalmazáson belül.

Python webszerverek

Most sorolja fel a Python-alkalmazásokhoz használható webszervereket. Beépítettünk bizonyos keretrendszereket is, amelyek azonnali támogatást nyújtanak a termelésre kész szerverekhez. Ez nem kimerítő lista, és az alábbi webszerver-ajánlások nincsenek meghatározott sorrendben.

Uvicorn

Ha ismeri az alkalmazásfejlesztést a FastAPI-val, akkor találkozott az Uvicornnal, egy webszerver-megvalósítással. Az Uvicorn egy ASGI-kiszolgáló megvalósítása Python számára.

Az Uvicorn és a kapcsolódó függőségek pip használatával történő telepítéséhez futtassa a következő parancsot:

$ pip install uvicorn[standard] 
# includes installation of optional and Cython-based dependencies

Az Uvicorn legfontosabb jellemzői a következők:

  • ASGI megvalósítás
  • Alkalmazások futtatásának támogatása aszinkron Python környezetből
  • A parancssori eszköz a lehetőségek széles listájával
  • Támogatja az alkalmazások futtatását a gyári funkciókból
  • Szolgáltatásokat biztosít a kiszolgálópéldányok programozott vezérléséhez

Gunicorn

A Gunicorn egy WSGI-kiszolgáló Python-alkalmazásokhoz, amely fejlett folyamatkezelési szolgáltatásairól jól ismert.

Az Uvicorn Gunicorn munkásosztályt ad, amely lehetővé teszi, hogy egyszerre érje el a teljesítmény és a folyamatkezelés előnyeit. Ez a dokumentációs oldal a Gunicorn telepítésének részleteit tartalmazza.

Ha Python 3.5 vagy újabb verziója van, a Gunicorn a pip segítségével telepítheti:

$ pip install gunicorn

A Gunicorn legfontosabb jellemzői a következők:

  • Egyszerű és gyors
  • Számos webes keretrendszerrel kompatibilis
  • HTTP proxyszerverrel való használat támogatása
  • Fejlett folyamatmenedzsment

CherryPy

A CherryPy egy Python webes keretrendszer – akárcsak a Django, a Flask és a FastAPI –, de nem olyan népszerű, mint ezek a keretrendszerek. Számos stabil kiadással a CherryPy már több mint egy évtizede létezik, és egy teljes körű keretrendszerré fejlődött. Támogató fejlesztői közösséggel is rendelkezik.

  Az 5 legjobb biztonsági rést a WordPress telepítésében

Megnézheti az érdekes Zen of CherryPy-t, amely azt a lényeget közvetíti, hogy a CherryPy egy egyszerű és minimalista, mégis erőteljes keretrendszer.

A CherryPy egy Python-keretrendszer, és nem egy webszerver, de szerepel a listánkon, mivel natívan támogatja az éles szintű szervereket – ellentétben a legtöbb más keretrendszerrel.

A CherryPy telepítéséhez és az induláshoz futtassa:

$ pip install CherryPy

A CherryPy legfontosabb jellemzői a következők:

  • Pythonic keretrendszer objektum-orientált Python használatával; kezdőknek is megfelelő
  • Támogatja a termelésre kész HTTP szervert, a Cherootot
  • Könnyebben megtanulható, mint más webes keretrendszerek, például a Django
  • Támogatja az egyszerű webes alkalmazások létrehozását és bevezetését a mikroszolgáltatásokban

Daphne

A Django az egyik legnépszerűbb Python webes keretrendszer. Ha a Django segítségével fejlesztett alkalmazásokat, valószínűleg a Daphne webszervert használta. A Daphne az egyik első ASGI kiszolgáló implementáció, amelyet referenciaként használnak az ASGI szerver implementációkhoz.

A Daphne PyPI-csomagként érhető el, amelyet a pip használatával telepíthet.

$ pip install daphne

Íme egy részletes oktatóanyag, amely végigvezeti Önt egy full-stack gyártásra kész Python-alkalmazás felépítésén.

A Daphne legfontosabb jellemzői a következők:

  • Széles körben elterjedt termelési környezetben
  • Referencia az összes ASGI szerver implementációhoz
  • HTTP, HTTP2 és WebSocket protokollok támogatása

Python Trio

A Trio projekt célja a termelési szintű aszinkron I/O képességek biztosítása: párhuzamos I/O és párhuzamosság támogatása. Ez a projekt több webes és HTTP Python könyvtárral is rendelkezik.

Telepítheti a Trio legújabb kiadását (2022. június) a PyPI-ből.

$ pip install trio

Íme a Python segítségével történő webes programozáshoz használható Trio könyvtárak listája:

  • hypercorn: A Hypercorn egy ASGI-kiszolgáló, amely támogatja a HTTP-t
  • muffin: A Muffin egy ASGI webes keretrendszer a Python számára
  • startlette: A Starlette egy könnyű ASGI keret
  • trio-websocket: WebSocket szerver és kliens támogatása
  • httpx: HTTP-kliens Pythonhoz

Twisted Web

A Twisted a Python alkalmazások keretrendszere. Ez az eseményvezérelt keretrendszer tartalmaz egy webes programozási modult, a twisted.web nevet.

  A Raspberry Pi használata proxyszerverként (Privoxyval)

A Twisted és a kapcsolódó modulok a pip segítségével telepíthetők:

$ pip install Twisted

A Twisted legfontosabb jellemzői a következők:

  • Fejlesztőbarát funkciók, mint például az egységteszt és a statikus kódellenőrzés
  • A twisted.web WSGI-kiszolgálót és HTTP-kliensek és -kiszolgálók támogatását biztosítja

AIOHTTP

Az AIOHTTP egy Python-könyvtár, amely kliens- és szerveroldali képességeket biztosít az ügyfél- és kiszolgáló API-kon keresztül.

Íme egy hasznos videó, amely elmagyarázza az ügyféloldali aszinkron programozási lehetőségeket, amelyek jelentősen felgyorsítják az API-k felé irányuló kéréseket.

Az AIOHTTP legfontosabb jellemzői a következők:

  • A HTTP szerver és a kliens funkciók támogatása
  • A naplózás támogatása a könnyebb hibakeresés megkönnyítése érdekében; naplózást biztosít egy kliens, szerver, web socket és egyebek számára
  • Natív támogatás a teszteléshez a pytest beépülő modulon keresztül: pytest-aiohttp, amely PyPI csomagként érhető el

Tornádó

A Tornado egy másik Python webes keretrendszer, amely támogatja az aszinkron hálózatépítést. Az elmúlt években a Tornado számos stabil kiadása jelent meg – a legutóbbi 6.2-es verzió 2022 júliusában jelent meg. Jelenleg a Tornado a Python 3.7-es és újabb verzióit támogatja.

A listában szereplő legtöbb csomaghoz hasonlóan a Tornado is telepíthető a pip használatával:

$ pip install tornado

A Tornado legfontosabb jellemzői a következők:

  • A HTTP szerver tornado.httpsserver és kliens támogatása
  • Méretezhető és nem blokkoló hálózati I/O-t használ
  • Kiválóan alkalmas olyan alkalmazásokhoz, amelyek lényegesen hosszabb ideig igényelnek kapcsolatot
  • Segédprogramok naplózáshoz, egységteszthez és egyebekhez
  • Zökkenőmentes integráció a hitelesítési szolgáltatásokkal

Meinheld

A Meinheld egy WSGI-kiszolgáló a Python számára. Meglévő könyvtárakat használ és épít fel az eseménykezeléshez és a HTTP kérések feldolgozásához.

A Meinheld a pip segítségével telepíthető:

$ pip install meinheld

A Meinheld néhány funkciója:

  • http-elemző könyvtárat használ a bejövő HTTP kérések kezelésére
  • A picoev könyvtár tetejére épül az eseménykezeléshez

Következtetés

Remélem, hasznosnak találta ezt a Python webszerverek listáját. Mindenképpen próbálja ki őket jövőbeli projektjei során. Felsoroltuk a legfontosabb jellemzőket; a függőségek és működésük teljes megértéséhez használnia kell őket az alkalmazásaiban. 👩🏽‍💻

Ha szeretné növelni Python-készségeit, tekintse meg a etoppc.com Python-oktatóanyag-könyvtárát. Boldog kódolást!