9 webových serverů Python, které můžete vyzkoušet pro svůj další projekt

V tomto seznamu představujeme několik webových serverů Python, které můžete použít k nasazení svých aplikací Python.

Začneme pochopením toho, jak fungují webové servery a potřebou rozhraní serverové brány. Poté si projdeme seznam webových serverů Python spolu s jejich hlavními funkcemi. Většina z nich je k dispozici jako balíčky PyPI, které si můžete nainstalovat a začít používat ve svých projektech.

Pojďme začít!

Co je webový server?

Při vývoji aplikace Python použijete vývojový server k testování aplikace. Po dokončení vývoje však budete muset aplikaci nasadit na produkční server. Mezi několika vrstvami přidané funkčnosti by měl mít webový server základní funkčnost HTTP serveru.

Webový server Pythonu by měl být schopen zpracovat požadavky HTTP (jednoduché požadavky HTTP jako GET, PUT a POST) od klientů, jako jsou webové prohlížeče, a vrátit odpověď. Tato odpověď může obsahovat stavový kód HTTP označující, zda byl požadavek zpracován úspěšně nebo ne. Může se skládat z webových stránek HTML a polostrukturovaných dat, jako jsou JSON, XML a další.

ASGI vs. WSGI: Pochopení rozhraní serverové brány

Předpokládejme, že jste vyvinuli aplikaci Python v rámci vašeho výběru, řekněme Django nebo Flask. Konvenční server nemusí být schopen porozumět a zpracovat požadavky směřované do aplikace Python. Zde vstupují do hry rozhraní brány serveru.

Tímto rozhraním brány může být rozhraní brány webového serveru (WSGI) nebo rozhraní ASGI (Asynchronous Server Gateway Interface). Webový server obdrží požadavek od klienta, který poté přesměruje na rozhraní brány serveru. Rozhraní (WSGI/ASGI) interaguje s aplikací Python prostřednictvím otevřeného callable.

Web Server Gateway Interface (WSGI) zpracovává požadavky postupně. Pokud existuje více pomalých požadavků HTTP, ovlivní propustnost.

Asynchronous Server Gateway Interface neboli ASGI je nástupcem WSGI a má další schopnost zpracovávat požadavky asynchronně.

  Identifikujte hudbu přehrávanou na počítači nebo na blízkém zařízení

Předpokládejme, že aktuálně obsluhovaný požadavek vyžaduje čtení databáze (to může potenciálně trvat dlouho) a čeká na odpověď. Když první požadavek čeká na odpověď, ASGI může zpracovat druhý příchozí požadavek.

To je na rozdíl od WSGI, kde první požadavek musí být zpracován pro druhý požadavek. Proto použití ASGI může vést ke zvýšení propustnosti. ASGI vám také umožňuje používat asynchronní funkce Pythonu ve vaší aplikaci.

Webové servery Python

Nyní uveďte seznam webových serverů, které můžete použít pro své aplikace Python. Zahrnuli jsme také určité rámce, které poskytují přímou podporu pro servery připravené na provoz. Toto není vyčerpávající seznam a níže uvedená doporučení pro webový server nejsou v žádném konkrétním pořadí.

Uvicorn

Pokud jste obeznámeni s vývojem aplikací pomocí FastAPI, narazili jste na Uvicorn, implementaci webového serveru. Uvicorn je implementace serveru ASGI pro Python.

Chcete-li nainstalovat Uvicorn a související závislosti pomocí pip, spusťte následující příkaz:

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

Následují hlavní rysy Uvicornu:

  • Implementace ASGI
  • Podpora pro spouštění aplikací z asynchronního prostředí Pythonu
  • Nástroj příkazového řádku s rozsáhlým seznamem možností
  • Podporuje spouštění aplikací z továrních funkcí
  • Poskytuje funkce pro programové řízení instancí serveru

Gunicorn

Gunicorn je WSGI server pro Python aplikace, dobře známý pro své pokročilé funkce pro správu procesů.

Uvicorn poskytuje pracovní třídu Gunicorn, která vám umožňuje dosáhnout výhod výkonu a řízení procesů současně. Tato stránka dokumentace obsahuje podrobnosti o nasazení Gunicornu.

Pokud máte Python 3.5 a novější, můžete Gunicorn nainstalovat pomocí pip:

$ pip install gunicorn

Následují hlavní rysy Gunicorna:

  • Jednoduché a rychlé
  • Kompatibilní s mnoha webovými frameworky
  • Podpora pro použití s ​​HTTP proxy serverem
  • Pokročilé řízení procesů

CherryPy

CherryPy je webový rámec Pythonu – stejně jako Django, Flask a FastAPI – ale není tak populární jako tyto rámce. S několika stabilními verzemi existuje CherryPy a vyvinulo se v plnohodnotný rámec již více než deset let. Má také podpůrnou vývojářskou komunitu.

  11 nejlepších řešení převodu textu na řeč pro obchodní a osobní použití

Můžete se podívat na zajímavý Zen of CherryPy, který vyjadřuje podstatu, že CherryPy je jednoduchý a minimalistický, ale výkonný framework.

CherryPy je framework Python a ne webový server, ale je na našem seznamu, protože nativně podporuje server produkční úrovně – na rozdíl od většiny ostatních frameworků.

Chcete-li nainstalovat CherryPy a začít, spusťte:

$ pip install CherryPy

Následují hlavní rysy CherryPy:

  • Pythonic framework využívající objektově orientovaný Python; dobře se hodí pro začátečníky
  • Podpora pro produkční server HTTP, Cheroot
  • Snadněji se učí než jiné webové rámce, jako je Django
  • Podpora pro vytváření a nasazení jednoduchých webových aplikací do mikroslužeb

Daphne

Django je jedním z nejpopulárnějších webových frameworků Pythonu. Pokud jste vyvíjeli aplikace pomocí Django, pravděpodobně jste použili webový server Daphne. Daphne je jednou z prvních implementací ASGI serverů používaných jako reference pro implementace ASGI serverů.

Daphne je k dispozici jako balíček PyPI, který můžete nainstalovat pomocí pip.

$ pip install daphne

Zde je podrobný tutoriál, který vás provede vytvořením plné produkční aplikace Python.

Následují hlavní rysy Daphne:

  • Široce přijato v produkčním prostředí
  • Reference pro všechny implementace serveru ASGI
  • Podpora protokolů HTTP, HTTP2 a WebSocket

Python Trio

Projekt Trio si klade za cíl poskytovat asynchronní I/O schopnosti na produkční úrovni: podporu paralelních I/O a souběžnosti. Tento projekt má také několik webových a HTTP Python knihoven.

Nejnovější verzi Trio (červen 2022) si můžete nainstalovat z PyPI.

$ pip install trio

Zde je seznam užitečných knihoven Trio pro webové programování v Pythonu:

  • hypercorn: Hypercorn je ASGI server, který podporuje HTTP
  • muffin: Muffin je webový framework ASGI pro Python
  • startlette: Starlette je lehký framework ASGI
  • trio-websocket: podpora serveru a klienta WebSocket
  • httpx: HTTP klient pro Python

Twisted Web

Twisted je framework pro Python aplikace. Tento rámec řízený událostmi obsahuje modul pro programování webu s názvem twisted.web.

  Jak odebrat kreditní kartu z Apple ID

Twisted a související moduly můžete nainstalovat pomocí pip:

$ pip install Twisted

Následují hlavní rysy Twisted:

  • Funkce přívětivé pro vývojáře, jako je testování jednotek a kontrola statického kódu
  • twisted.web poskytuje server WSGI a podporu pro HTTP klienty a servery

AIOHTTP

AIOHTTP je knihovna Pythonu, která poskytuje funkce na straně klienta a serveru prostřednictvím rozhraní API klienta a serveru.

Zde je užitečné video vysvětlující možnosti asynchronního programování na straně klienta, které výrazně urychlí požadavky na rozhraní API.

Následují hlavní rysy AIOHTTP:

  • Podpora funkce HTTP serveru i klienta
  • Podpora protokolování pro snadnější ladění; poskytuje protokolování pro klienta, server, webové sokety a další
  • Nativní podpora pro testování prostřednictvím pytest Plugin pro testování: pytest-aiohttp, který je k dispozici jako balíček PyPI

Tornádo

Tornado je další webový rámec Pythonu, který podporuje asynchronní sítě. V posledních letech bylo vydáno mnoho stabilních verzí Tornado – nejnovější verze 6.2 byla vydána v červenci 2022. V současné době Tornado podporuje Python 3.7 a novější.

Stejně jako většinu balíčků v tomto seznamu lze Tornado nainstalovat také pomocí pip:

$ pip install tornado

Následují hlavní rysy Tornado:

  • Podpora pro HTTP server tornado.httpsserver a klient
  • Škálovatelný a používá neblokující síťové I/O
  • Dobře se hodí pro aplikace, které vyžadují připojení po podstatně delší časový interval
  • Nástroje pro protokolování, testování jednotek a další
  • Bezproblémová integrace se službami pro ověřování

Meinheld

Meinheld je WSGI server pro Python. Využívá a buduje existující knihovny pro zpracování událostí a zpracování požadavků HTTP.

Meinheld můžete nainstalovat pomocí pip:

$ pip install meinheld

Některé funkce Meinheldu:

  • Používá knihovnu http-parser ke zpracování příchozích požadavků HTTP
  • Staví na knihovně picoev pro zpracování událostí

Závěr

Doufám, že vám tento seznam webových serverů Python pomohl. Určitě je vyzkoušejte ve svých budoucích projektech. Uvedli jsme klíčové funkce; abyste plně porozuměli závislostem a tomu, jak fungují, budete je muset používat ve svých aplikacích. 👩🏽‍💻

Chcete-li zlepšit své dovednosti Python, zvažte prozkoumání knihovny výukových programů Pythonu ve etechblog.cz. Šťastné kódování!