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!
Tartalomjegyzé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.
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.
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 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!