Bir Sonraki Projeniz İçin Deneyebileceğiniz 9 Python Web Sunucusu

Yayınlanan: 2022-09-06

Bu listede, Python uygulamalarınızı dağıtmak için kullanabileceğiniz birkaç Python web sunucusu sunuyoruz.

Web sunucularının nasıl çalıştığını ve sunucu ağ geçidi arayüzlerine olan ihtiyacı anlayarak başlayacağız. Ardından, göze çarpan özellikleriyle birlikte Python web sunucularının listesini gözden geçireceğiz. Çoğu, projelerinizde kurabileceğiniz ve kullanmaya başlayabileceğiniz PyPI paketleri olarak mevcuttur.

Hadi başlayalım!

İnternet sunucusu nedir?

Bir Python uygulaması geliştirirken uygulamanızı test etmek için geliştirme sunucusunu kullanacaksınız. Ancak geliştirme tamamlandıktan sonra uygulamanızı üretim düzeyinde bir sunucuya dağıtmanız gerekir. En üstte bulunan birkaç ek işlevsellik katmanı arasında, bir web sunucusu, bir HTTP sunucusunun temel işlevlerine sahip olmalıdır.

python-web-sunucusu

Python web sunucusu, web tarayıcıları gibi istemcilerden gelen HTTP isteklerini (GET, PUT ve POST gibi basit HTTP istekleri) işleyebilmeli ve yanıtı döndürebilmelidir. Bu yanıt, isteğin başarıyla işlenip işlenmediğini gösteren HTTP durum kodunu içerebilir. HTML web sayfalarından ve JSON, XML ve daha fazlası gibi yarı yapılandırılmış verilerden oluşabilir.

ASGI ve WSGI: Sunucu Ağ Geçidi Arayüzlerini Anlama

Diyelim ki Django veya Flask gibi seçtiğiniz bir çerçevede bir Python uygulaması geliştirdiniz. Geleneksel bir sunucu, Python uygulamasına yönlendirilen istekleri anlayamayabilir ve işleyemeyebilir. İşte burada sunucu ağ geçidi arayüzleri devreye giriyor.

Bu ağ geçidi arabirimi, bir Web Sunucusu Ağ Geçidi Arabirimi ( WSGI ) veya bir Eşzamansız Sunucu Ağ Geçidi Arabirimi ( ASGI ) olabilir. Web sunucusu, bir istemciden bir istek alır ve ardından sunucu ağ geçidi arabirimine yönlendirir. Arabirim (WSGI/ASGI), açık bir çağrılabilir aracılığıyla Python uygulamasıyla etkileşime girer.

python-web-sunucu-asgi-wsgi

Web Sunucusu Ağ Geçidi Arayüzü ( WSGI ), istekleri sırayla işler. Birden çok yavaş HTTP isteği varsa, bunlar verimi etkiler.

Asenkron Sunucu Ağ Geçidi Arayüzü veya ASGI, WSGI'nin halefidir ve istekleri zaman uyumsuz olarak işlemek için ek bir yeteneğe sahiptir.

Şu anda hizmet verilen bir isteğin bir veritabanı okuması gerektirdiğini (potansiyel olarak uzun zaman alabilir) ve yanıtı beklediğini varsayalım. İlk istek bir yanıt beklerken, ASGI gelen ikinci bir isteği işleyebilir.

Bu, ilk isteğin ikinci istekten önce işlenmesi gereken WSGI'nin aksine. Bu nedenle, ASGI'nın kullanılması, verimin artmasına neden olabilir. ASGI, uygulamanızda eşzamansız Python özelliklerini kullanmanıza da olanak tanır.

Python Web Sunucuları

Şimdi Python uygulamalarınız için kullanabileceğiniz web sunucularını listeleyelim. Ayrıca, üretime hazır sunucular için kullanıma hazır destek sağlayan belirli çerçeveler ekledik. Bu ayrıntılı bir liste değildir ve aşağıdaki web sunucusu önerileri belirli bir sırada değildir.

Uvicorn

FastAPI ile uygulama geliştirmeye aşina iseniz, bir web sunucusu uygulaması olan Uvicorn ile karşılaşmışsınızdır. Uvicorn, Python için bir ASGI sunucu uygulamasıdır.

python-web-sunucu-uvicorn

Uvicorn ve ilişkili bağımlılıkları pip kullanarak kurmak için aşağıdaki komutu çalıştırın:

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

Uvicorn'un göze çarpan özellikleri şunlardır:

  • ASGI uygulaması
  • Eşzamansız bir Python ortamından uygulama çalıştırma desteği
  • Kapsamlı bir seçenek listesi içeren komut satırı aracı
  • Fabrika işlevlerinden çalışan uygulamaları destekler
  • Sunucu örneklerini programlı olarak kontrol etmek için özellikler sağlar

gunicorn

Gunicorn, gelişmiş süreç yönetimi özellikleriyle tanınan Python uygulamaları için bir WSGI sunucusudur.

gunicorn-python-web sunucusu

Uvicorn, performans ve süreç yönetimi avantajlarını aynı anda elde etmenize olanak tanıyan bir Gunicorn işçi sınıfı sunar. Bu belge sayfası, Gunicorn'un dağıtımıyla ilgili ayrıntıları içerir.

Python 3.5 ve sonraki bir sürümüne sahipseniz, Gunicorn'u pip kullanarak kurabilirsiniz:

 $ pip install gunicorn

Gunicorn'un göze çarpan özellikleri şunlardır:

  • Basit ve hızlı
  • Birçok web çerçevesiyle uyumlu
  • HTTP proxy sunucusuyla kullanım desteği
  • Gelişmiş süreç yönetimi

KirazPy

CherryPy, tıpkı Django, Flask ve FastAPI gibi bir Python web çerçevesidir, ancak bu çerçeveler kadar popüler değildir. Birkaç kararlı sürümle CherryPy, on yılı aşkın bir süredir ortalıkta ve tam teşekküllü bir çerçeveye dönüşmüştür. Ayrıca destekleyici bir geliştirici topluluğuna sahiptir.

kirazlı

CherryPy'nin basit ve minimalist ancak güçlü bir çerçeve olduğu özünü aktaran ilginç Zen of CherryPy'ye göz atabilirsiniz.

CherryPy bir Python çerçevesidir ve bir web sunucusu değildir, ancak diğer birçok çerçevenin aksine üretim düzeyinde bir sunucuyu yerel olarak desteklediği için listemizdedir.

CherryPy'yi yüklemek ve başlamak için şunu çalıştırın:

 $ pip install CherryPy

Aşağıdakiler CherryPy'nin göze çarpan özellikleridir:

  • Nesneye yönelik Python kullanan Pythonic framework; yeni başlayanlar için çok uygun
  • Üretime hazır bir HTTP sunucusu desteği, Cheroot
  • Django gibi diğer web çerçevelerinden öğrenmesi daha kolay
  • Basit web uygulamaları oluşturma ve mikro hizmetlere dağıtma desteği

Defne

Django, en popüler Python web çerçevelerinden biridir. Django ile uygulamalar geliştirdiyseniz, muhtemelen Daphne web sunucusunu kullanmışsınızdır. Daphne, ASGI sunucu uygulamaları için referans olarak kullanılan ilk ASGI sunucu uygulamalarından biridir.

Daphne, pip kullanarak kurabileceğiniz bir PyPI paketi olarak mevcuttur.

 $ pip install daphne

İşte tam yığın üretime hazır bir Python uygulaması oluştururken size yol gösterecek ayrıntılı bir eğitim.

Daphne'nin öne çıkan özellikleri şunlardır:

  • Üretim ortamlarında yaygın olarak benimsenmiştir
  • Tüm ASGI sunucu uygulamaları için referans
  • HTTP, HTTP2 ve WebSocket protokolleri için destek

piton üçlüsü

Trio projesi, üretim düzeyinde asenkron G/Ç yetenekleri sağlamayı amaçlamaktadır: paralel G/Ç ve eşzamanlılık desteği. Bu proje ayrıca birkaç web ve HTTP Python kitaplığına sahiptir.

Trio'nun en son sürümünü (Haziran 2022) PyPI'den yükleyebilirsiniz.

 $ pip install trio

Python ile web programlama için kullanışlı Trio kitaplıklarının listesi:

  • hypercorn : Hypercorn, HTTP'yi destekleyen bir ASGI sunucusudur
  • muffin : Muffin, Python için bir ASGI web çerçevesidir
  • startlette : Starlette hafif bir ASGI çerçevesidir
  • trio-websocket : WebSocket sunucu ve istemci desteği
  • httpx : Python için HTTP istemcisi

bükülmüş ağ

Twisted, Python uygulamaları için bir çerçevedir. Bu olaya dayalı çerçeve, web programlama için twisted.web adlı bir modül içerir.

Twisted ve ilgili modülleri pip kullanarak kurabilirsiniz:

 $ pip install Twisted

Aşağıdakiler Twisted'in göze çarpan özellikleridir:

  • Birim testi ve statik kod kontrolü gibi geliştirici dostu özellikler
  • twisted.web , bir WSGI sunucusu ve HTTP istemcileri ve sunucuları için destek sağlar

AIOHTTP

AIOHTTP, istemci ve sunucu API'leri aracılığıyla istemci ve sunucu tarafı yetenekleri sağlayan bir Python kitaplığıdır.

API'lere yönelik istekleri önemli ölçüde hızlandırmak için istemci tarafında eşzamansız programlama yeteneklerini açıklayan yararlı bir video.

Aşağıdakiler, AIOHTTP'nin göze çarpan özellikleridir:

  • Hem HTTP sunucusu hem de istemci işlevselliği için destek
  • Daha kolay hata ayıklamayı kolaylaştırmak için günlüğe kaydetme desteği; bir istemci, sunucu, web soketleri ve daha fazlası için günlük kaydı sağlar
  • Test için pytest Eklentisi aracılığıyla test için yerel destek: PyPI paketi olarak sunulan pytest-aiohttp

Kasırga

Tornado, asenkron ağları destekleyen başka bir Python web çerçevesidir. Son yıllarda, Tornado'nun birçok kararlı sürümü yayınlandı – en son sürüm 6.2, Temmuz 2022'de yayınlandı. Şu anda Tornado, Python 3.7 ve sonraki sürümleri desteklemektedir.

Bu listedeki çoğu paket gibi Tornado da pip kullanılarak kurulabilir:

 $ pip install tornado

Aşağıdakiler Tornado'nun göze çarpan özellikleridir:

  • HTTP sunucusu tornado.httpserver sunucusu ve istemci desteği
  • Ölçeklenebilir ve engellenmeyen ağ G/Ç'sini kullanır
  • Önemli ölçüde daha uzun bir zaman aralığı için bağlantı gerektiren uygulamalar için çok uygundur
  • Günlüğe kaydetme, birim testi ve daha fazlası için yardımcı programlar
  • Kimlik doğrulama için hizmetlerle sorunsuz entegrasyon

Meinheld

Meinheld, Python için bir WSGI sunucusudur. Olay işleme ve HTTP istek işleme için mevcut kitaplıkları kullanır ve oluşturur.

Meinheld'i pip kullanarak kurabilirsiniz:

 $ pip install meinheld

Meinheld'in bazı özellikleri:

  • Gelen HTTP isteklerini işlemek için http-parser kitaplığını kullanır
  • Olay işleme için picoev kitaplığının üstüne kurulur

Çözüm

Umarım bu Python web sunucuları listesini faydalı bulmuşsunuzdur. Gelecekteki projelerinizde bunları denediğinizden emin olun. Temel özellikleri listeledik; bağımlılıkları ve nasıl çalıştıklarını tam olarak anlamak için bunları uygulamalarınızda kullanmanız gerekir.

Python becerilerinizi geliştirmek istiyorsanız, Geekflare'nin Python öğretici kitaplığına göz atmayı düşünün. Mutlu kodlama!