9 Питхон веб сервера које можете испробати за ваш следећи пројекат

Ova lista prikazuje razne Python web servere koje možete upotrebiti za postavljanje svojih Python aplikacija.

Počećemo sa razumevanjem načina na koji web serveri funkcionišu i zašto su potrebni interfejsi server gateway-a. Zatim ćemo proći kroz listu Python web servera, zajedno sa njihovim ključnim karakteristikama. Većina njih je dostupna kao PyPI paketi koje možete instalirati i odmah početi da koristite u svojim projektima.

Krenimo!

Šta je web server?

Tokom razvoja Python aplikacije, koristite razvojni server za testiranje. Međutim, kada je razvoj završen, neophodno je primeniti vašu aplikaciju na produkcijski server. Osim dodatne funkcionalnosti, web server bi trebalo da ima osnovnu funkcionalnost HTTP servera.

Python web server mora biti sposoban da obradi HTTP zahteve (kao što su GET, PUT i POST) od klijenata, poput web pregledača, i da vrati odgovor. Ovaj odgovor može sadržati HTTP statusni kod koji pokazuje da li je zahtev uspešno obrađen. Može da se sastoji od HTML web stranica i polustruktuiranih podataka kao što su JSON, XML i drugi.

ASGI vs WSGI: Razumevanje interfejsa server gateway-a

Zamislite da ste razvili Python aplikaciju koristeći framework po izboru, recimo Django ili Flask. Konvencionalni server možda neće moći da razume i obradi zahteve upućene Python aplikaciji. Tu na scenu stupaju interfejsi server gateway-a.

Ovaj gateway interfejs može biti Web Server Gateway Interface (WSGI) ili Asynchronous Server Gateway Interface (ASGI). Web server prima zahtev od klijenta, koji se zatim prosleđuje interfejsu server gateway-a. Interfejs (WSGI/ASGI) komunicira sa Python aplikacijom putem izloženog poziva.

Web Server Gateway Interface (WSGI) obrađuje zahteve sekvencijalno. Ako postoji više sporih HTTP zahteva, to će uticati na propusnost.

Asynchronous Server Gateway Interface, ili ASGI, je naslednik WSGI-ja i ima dodatnu mogućnost asinhronog obrade zahteva.

Pretpostavimo da trenutno servisirani zahtev zahteva čitanje iz baze podataka (što može da potraje) i čeka odgovor. Dok prvi zahtev čeka na odgovor, ASGI može obraditi drugi dolazni zahtev.

Ovo je suprotno od WSGI-ja, gde prvi zahtev mora biti obrađen da bi se obradio sledeći. Stoga, korišćenje ASGI-ja može dovesti do poboljšanja propusnosti. ASGI takođe omogućava korišćenje asinhronih Python mogućnosti unutar vaše aplikacije.

Python web serveri

Sada, predstavljamo web servere koje možete koristiti za svoje Python aplikacije. Takođe smo uključili neke frameworke koji pružaju gotovu podršku za produkcijski spremne servere. Ovo nije potpuna lista, a preporuke web servera su navedene bez određenog redosleda.

Uvicorn

Ako ste upoznati sa razvojem aplikacija pomoću FastAPI-ja, naići ćete na Uvicorn, implementaciju web servera. Uvicorn je ASGI server implementacija za Python.

Da biste instalirali Uvicorn i povezane zavisnosti pomoću pip-a, pokrenite sledeću komandu:

$ pip install uvicorn[standard] 
# uključuje instalaciju opcionalnih i Cython-baziranih zavisnosti

Sledeće su Uvicornove istaknute karakteristike:

  • ASGI implementacija
  • Podrška za pokretanje aplikacija iz asinhronog Python okruženja
  • Komandni alat sa opsežnom listom opcija
  • Podržava pokretanje aplikacija iz fabričkih funkcija
  • Pruža funkcije za programsku kontrolu instanci servera

Gunicorn

Gunicorn je WSGI server za Python aplikacije, poznat po svojim naprednim funkcijama upravljanja procesima.

Uvicorn nudi Gunicorn radničku klasu, omogućavajući vam da istovremeno ostvarite prednosti u pogledu performansi i upravljanja procesima. Detalje o podešavanju Gunicorn-a možete pronaći na ovoj stranici sa dokumentacijom.

Ako imate Python 3.5 ili novije verzije, možete instalirati Gunicorn koristeći pip:

$ pip install gunicorn

Sledeće su Gunicornove istaknute karakteristike:

  • Jednostavan i brz
  • Kompatibilan sa mnogim web framework-ovima
  • Podrška za upotrebu sa HTTP proxy serverom
  • Napredno upravljanje procesima

CherryPy

CherryPy je Python web framework — poput Django-a, Flask-a i FastAPI-ja — ali nije toliko popularan kao ovi framework-ovi. Sa nekoliko stabilnih izdanja, CherryPy postoji i razvija se u potpuno razvijen framework više od jedne decenije. Takođe ima aktivnu zajednicu programera koja ga podržava.

Možete pogledati interesantan Zen of CherryPy, koji prenosi suštinu da je CherryPy jednostavan i minimalistički, ali moćan framework.

CherryPy je Python framework, a ne web server, ali se nalazi na našoj listi jer izvorno podržava produkcijski spreman server — za razliku od većine drugih framework-ova.

Da biste instalirali CherryPy i započeli, pokrenite:

$ pip install CherryPy

Sledeće su glavne karakteristike CherryPy-ja:

  • Pythonic framework koji koristi objektno orijentisani Python; dobro je pogodan za početnike
  • Podrška za produkcijski spreman HTTP server, Cheroot
  • Lakši je za učenje od drugih web framework-ova, poput Django-a
  • Podrška za izradu i primenu jednostavnih web aplikacija na mikroservisima

Daphne

Django je jedan od najpopularnijih Python web framework-ova. Ako ste razvijali aplikacije pomoću Django-a, verovatno ćete koristiti Daphne web server. Daphne je jedna od prvih ASGI server implementacija koja se koristi kao referenca za ASGI server implementacije.

Daphne je dostupan kao PyPI paket koji možete instalirati koristeći pip.

$ pip install daphne

Evo detaljnog vodiča koji će vas provesti kroz izradu Python aplikacije spremne za potpunu produkciju.

Slede Daphneine istaknute karakteristike:

  • Široko prihvaćen u produkcijskim okruženjima
  • Referenca za sve ASGI server implementacije
  • Podrška za HTTP, HTTP2 i WebSocket protokole

Python Trio

Trio projekat ima za cilj da obezbedi asinhronu I/O funkcionalnost produkcijskog nivoa: podršku za paralelni I/O i konkurentnost. Ovaj projekat takođe ima nekoliko web i HTTP Python biblioteka.

Možete instalirati najnovije izdanje Trio-a (jun 2022.) sa PyPI-ja.

$ pip install trio

Evo liste korisnih Trio biblioteka za web programiranje sa Python-om:

  • hypercorn: Hypercorn je ASGI server koji podržava HTTP
  • muffin: Muffin je ASGI web framework za Python
  • starlette: Starlette je lagani ASGI framework
  • trio-websocket: podrška za WebSocket server i klijent
  • httpx: HTTP klijent za Python

Twisted Web

Twisted je framework za Python aplikacije. Ovaj framework vođen događajima uključuje modul za web programiranje pod nazivom twisted.web.

Možete instalirati Twisted i povezane module koristeći pip:

$ pip install Twisted

Sledeće su Twisted-ove istaknute karakteristike:

  • Funkcije pogodne za programere, kao što su testiranje jedinica i statička provera koda
  • twisted.web obezbeđuje WSGI server i podršku za HTTP klijente i servere

AIOHTTP

AIOHTTP je Python biblioteka koja pruža klijentske i serverske mogućnosti preko API-ja klijenta i servera.

Evo korisnog video snimka koji objašnjava mogućnosti asinhronog programiranja na strani klijenta za značajno ubrzanje zahteva za API-je.

Sledeće su glavne karakteristike AIOHTTP-a:

  • Podrška za funkcionalnost HTTP servera i klijenta
  • Podrška za logovanje radi lakšeg otklanjanja grešaka; obezbeđuje logovanje za klijenta, server, web socket i još mnogo toga
  • Izvorna podrška za testiranje preko pytest dodatka za testiranje: pytest-aiohttp, koji je dostupan kao PyPI paket

Tornado

Tornado je još jedan Python web framework koji podržava asinhrono umrežavanje. Poslednjih godina bilo je mnogo stabilnih izdanja Tornado-a – najnovija verzija 6.2 je objavljena u julu 2022. Tornado trenutno podržava Python 3.7 i novije verzije.

Kao i većina paketa na ovoj listi, Tornado se takođe može instalirati pomoću pip-a:

$ pip install tornado

Sledeće su glavne karakteristike Tornado-a:

  • Podrška za HTTP server tornado.httpserver i klijent
  • Skalabilan je i koristi neblokirajući mrežni I/O
  • Pogodan za aplikacije koje zahtevaju povezanost tokom znatno dužeg vremenskog intervala
  • Uslužni programi za logovanje, testiranje jedinica i još mnogo toga
  • Besprekorna integracija sa servisima za autentifikaciju

Meinheld

Meinheld je WSGI server za Python. Koristi postojeće biblioteke za rukovanje događajima i obradu HTTP zahteva.

Možete instalirati Meinheld koristeći pip:

$ pip install meinheld

Neke karakteristike Meinheld-a:

  • Koristi http-parser biblioteku za rukovanje dolaznim HTTP zahtevima
  • Nadograđuje se na picoev biblioteku za rukovanje događajima

Zaključak

Nadam se da vam je ova lista Python web servera bila od pomoći. Obavezno ih isprobajte u svojim budućim projektima. Naveli smo ključne karakteristike; da biste u potpunosti razumeli zavisnosti i kako one funkcionišu, moraćete da ih koristite u svojim aplikacijama. 👩🏽‍💻

Ako želite da unapredite svoje Python veštine, razmislite o tome da proverite wdwdz-ovu biblioteku Python tutorijala. Srećno kodiranje!