9 Server Web Python untuk Dicoba untuk Proyek Anda Berikutnya
Diterbitkan: 2022-09-06Dalam daftar ini, kami menyajikan beberapa server web Python yang dapat Anda gunakan untuk menyebarkan aplikasi Python Anda.
Kita akan mulai dengan memahami cara kerja server web dan kebutuhan antarmuka gateway server. Kemudian, kita akan membahas daftar server web Python beserta fitur-fiturnya yang menonjol. Sebagian besar dari mereka tersedia sebagai paket PyPI yang dapat Anda instal dan mulai gunakan dalam proyek Anda.
Mari kita mulai!
Apa itu Server Web?
Saat mengembangkan aplikasi Python, Anda akan menggunakan server pengembangan untuk menguji aplikasi Anda. Namun, setelah pengembangan selesai, Anda harus men-deploy aplikasi Anda di server tingkat produksi. Di antara beberapa lapisan fungsionalitas tambahan di atas, server web harus memiliki fungsionalitas dasar server HTTP.

Server web Python harus dapat menangani permintaan HTTP (permintaan HTTP sederhana seperti GET, PUT, dan POST) dari klien, seperti browser web, dan mengembalikan respons. Tanggapan ini mungkin termasuk kode status HTTP yang menunjukkan apakah permintaan berhasil diproses atau tidak. Ini mungkin terdiri dari halaman web HTML dan data semi-terstruktur seperti JSON, XML, dan banyak lagi.
ASGI vs. WSGI: Memahami Antarmuka Server Gateway
Misalkan Anda telah mengembangkan aplikasi Python dalam kerangka pilihan Anda, katakanlah, Django atau Flask. Server konvensional mungkin tidak dapat memahami dan memproses permintaan yang diarahkan ke aplikasi Python. Di sinilah antarmuka gateway server berperan.
Antarmuka gateway ini dapat berupa Web Server Gateway Interface ( WSGI ) atau Asynchronous Server Gateway Interface ( ASGI ). Server web menerima permintaan dari klien, yang kemudian diarahkan ke antarmuka gateway server. Antarmuka (WSGI/ASGI) berinteraksi dengan aplikasi Python melalui callable yang terbuka.

Web Server Gateway Interface ( WSGI ) menangani permintaan secara berurutan. Jika ada beberapa permintaan HTTP yang lambat, maka permintaan tersebut akan memengaruhi throughput.
Asynchronous Server Gateway Interface, atau ASGI, adalah penerus WSGI dan memiliki kemampuan tambahan untuk menangani permintaan secara asinkron.
Misalkan permintaan yang saat ini dilayani memerlukan pembacaan basis data (yang berpotensi memakan waktu lama) dan sedang menunggu tanggapan. Saat permintaan pertama menunggu tanggapan, ASGI dapat menangani permintaan masuk kedua.
Ini berbeda dengan WSGI, di mana permintaan pertama harus diproses sebelum permintaan kedua. Oleh karena itu, menggunakan ASGI dapat menghasilkan peningkatan throughput. ASGI juga memungkinkan Anda menggunakan kemampuan Python asinkron dalam aplikasi Anda.
Server Web Python
Sekarang, mari daftar server web yang dapat Anda gunakan untuk aplikasi Python Anda. Kami juga menyertakan kerangka kerja tertentu yang menyediakan dukungan siap pakai untuk server siap produksi. Ini bukan daftar yang lengkap, dan rekomendasi server web di bawah ini tidak dalam urutan tertentu.
Uvicorn
Jika Anda terbiasa dengan pengembangan aplikasi dengan FastAPI, Anda akan menemukan Uvicorn, implementasi server web. Uvicorn adalah implementasi server ASGI untuk Python.

Untuk menginstal Uvicorn dan dependensi terkait menggunakan pip
, jalankan perintah berikut:
$ pip install uvicorn[standard] # includes installation of optional and Cython-based dependencies
Berikut ini adalah fitur-fitur menonjol dari Uvicorn:
- implementasi ASGI
- Dukungan untuk menjalankan aplikasi dari lingkungan Python asinkron
- Alat baris perintah dengan daftar opsi yang ekstensif
- Mendukung menjalankan aplikasi dari fungsi pabrik
- Menyediakan fitur untuk mengontrol instance server secara terprogram
gunicorn
Gunicorn adalah server WSGI untuk aplikasi Python, terkenal dengan fitur manajemen prosesnya yang canggih.

Uvicorn memberikan kelas pekerja Gunicorn, memungkinkan Anda mencapai keunggulan kinerja dan manajemen proses secara bersamaan. Halaman dokumentasi ini berisi detail tentang penerapan Gunicorn.
Jika Anda memiliki Python 3.5 dan yang lebih baru, Anda dapat menginstal Gunicorn menggunakan pip:
$ pip install gunicorn
Berikut ini adalah fitur-fitur menonjol Gunicorn:
- Sederhana dan cepat
- Kompatibel dengan banyak kerangka kerja web
- Dukungan untuk digunakan dengan server proxy HTTP
- Manajemen proses lanjutan
CherryPy
CherryPy adalah kerangka kerja web Python—sama seperti Django, Flask, dan FastAPI—tetapi tidak sepopuler kerangka kerja ini. Dengan beberapa rilis stabil, CherryPy telah ada dan telah berkembang menjadi kerangka kerja yang lengkap selama lebih dari satu dekade. Ini juga memiliki komunitas pengembang yang mendukung.

Anda dapat melihat Zen CherryPy yang menarik, yang menyampaikan esensi bahwa CherryPy adalah kerangka kerja yang sederhana dan minimalis namun kuat.
CherryPy adalah kerangka kerja Python dan bukan server web, tetapi ada dalam daftar kami karena secara asli mendukung server tingkat produksi—tidak seperti kebanyakan kerangka kerja lainnya.
Untuk menginstal CherryPy dan memulai, jalankan:
$ pip install CherryPy
Berikut ini adalah fitur-fitur penting CherryPy:
- Kerangka kerja Pythonic menggunakan Python berorientasi objek; cocok untuk pemula
- Dukungan untuk server HTTP siap produksi, Cheroot
- Lebih mudah dipelajari daripada kerangka kerja web lainnya, seperti Django
- Dukungan untuk membangun dan menerapkan aplikasi web sederhana ke layanan mikro
daphne
Django adalah salah satu kerangka kerja web Python paling populer. Jika Anda telah mengembangkan aplikasi dengan Django, Anda mungkin telah menggunakan server web Daphne. Daphne merupakan salah satu implementasi server ASGI pertama yang digunakan sebagai acuan implementasi server ASGI.

Daphne tersedia sebagai paket PyPI yang dapat Anda instal menggunakan pip.
$ pip install daphne
Berikut adalah tutorial mendetail yang akan memandu Anda dalam membangun aplikasi Python siap produksi full-stack.
Berikut ini adalah fitur menonjol Daphne:
- Diadopsi secara luas di lingkungan produksi
- Referensi untuk semua implementasi server ASGI
- Dukungan untuk protokol HTTP, HTTP2, dan WebSocket
Trio Python
Proyek Trio bertujuan untuk menyediakan kemampuan I/O asinkron tingkat produksi: dukungan untuk I/O paralel dan konkurensi. Proyek ini juga memiliki beberapa pustaka web dan HTTP Python.

Anda dapat menginstal rilis terbaru Trio (Juni 2022) dari PyPI.
$ pip install trio
Berikut daftar library Trio yang berguna untuk pemrograman web dengan Python:
-
hypercorn
: Hypercorn adalah server ASGI yang mendukung HTTP -
muffin
: Muffin adalah kerangka web ASGI untuk Python -
startlette
: Starlette adalah framework ASGI yang ringan -
trio-websocket
: dukungan untuk server dan klien WebSocket -
httpx
: Klien HTTP untuk Python
Web terpelintir
Twisted adalah kerangka kerja untuk aplikasi Python. Kerangka kerja yang digerakkan oleh peristiwa ini mencakup modul untuk pemrograman web yang disebut twisted.web
.
Anda dapat menginstal Twisted dan modul terkait menggunakan pip:
$ pip install Twisted
Berikut ini adalah fitur menonjol Twisted:
- Fitur ramah pengembang seperti pengujian unit dan pemeriksaan kode statis
-
twisted.web
menyediakan server WSGI dan dukungan untuk klien dan server HTTP
AIOHTTP
AIOHTTP adalah pustaka Python yang menyediakan kemampuan sisi klien dan server melalui API klien dan server.
Berikut adalah video berguna yang menjelaskan kemampuan pemrograman asinkron di sisi klien untuk mempercepat permintaan ke API secara signifikan.
Berikut ini adalah fitur yang menonjol dari AIOHTTP:
- Dukungan untuk server HTTP dan fungsionalitas klien
- Dukungan untuk logging untuk memfasilitasi debugging lebih mudah; menyediakan logging untuk klien, server, soket web, dan banyak lagi
- Dukungan asli untuk pengujian melalui pytest Plugin untuk pengujian: pytest-aiohttp, Yang tersedia sebagai paket PyPI
Angin topan
Tornado adalah kerangka kerja web Python lain yang mendukung jaringan asinkron. Dalam beberapa tahun terakhir, ada banyak rilis stabil Tornado – versi terbaru 6.2, dirilis pada Juli 2022. Saat ini, Tornado mendukung Python 3.7 dan yang lebih baru.

Seperti kebanyakan paket dalam daftar ini, Tornado juga dapat diinstal menggunakan pip
:
$ pip install tornado
Berikut ini adalah fitur-fitur menonjol Tornado:
- Dukungan untuk server HTTP
tornado.httpserver
dan klien - Dapat diskalakan dan menggunakan I/O jaringan non-pemblokiran
- Sangat cocok untuk aplikasi yang membutuhkan konektivitas untuk interval waktu yang jauh lebih lama
- Utilitas untuk logging, pengujian unit, dan banyak lagi
- Integrasi yang mulus dengan layanan untuk otentikasi
meinheld
Meinheld adalah server WSGI untuk Python. Ini menggunakan dan membangun perpustakaan yang ada untuk penanganan acara dan pemrosesan permintaan HTTP.
Anda dapat menginstal Meinheld menggunakan pip:
$ pip install meinheld
Beberapa fitur Meinheld:
- Menggunakan perpustakaan
http-parser
untuk menangani permintaan HTTP yang masuk - Dibangun di atas perpustakaan
picoev
untuk penanganan acara
Kesimpulan
Saya harap Anda menemukan daftar server web Python ini bermanfaat. Pastikan untuk mencobanya di proyek masa depan Anda. Kami telah membuat daftar fitur utama; untuk sepenuhnya memahami dependensi dan cara kerjanya, Anda harus menggunakannya dalam aplikasi Anda.
Jika Anda ingin meningkatkan keterampilan Python Anda, pertimbangkan untuk memeriksa perpustakaan Geekflare tentang tutorial Python. Selamat mengkode!