9 Python Web Servers ที่ต้องลองสำหรับโครงการต่อไปของคุณ
เผยแพร่แล้ว: 2022-09-06ในบทความนี้ เรานำเสนอ เว็บเซิร์ฟเวอร์ Python หลายตัวที่คุณสามารถใช้เพื่อปรับใช้แอปพลิเคชัน Python ของคุณ
เราจะเริ่มด้วยการทำความเข้าใจวิธีการทำงานของเว็บเซิร์ฟเวอร์และความต้องการอินเทอร์เฟซเกตเวย์ของเซิร์ฟเวอร์ จากนั้น เราจะดูรายชื่อเว็บเซิร์ฟเวอร์ Python พร้อมกับคุณสมบัติเด่นของพวกเขา ส่วนใหญ่มีให้เป็นแพ็คเกจ PyPI ที่คุณสามารถติดตั้งและเริ่มใช้งานในโครงการของคุณได้
เอาล่ะ!
เว็บเซิร์ฟเวอร์คืออะไร?
เมื่อพัฒนาแอปพลิเคชัน Python คุณจะต้องใช้เซิร์ฟเวอร์การพัฒนาเพื่อทดสอบแอปของคุณ อย่างไรก็ตาม เมื่อการพัฒนาเสร็จสิ้น คุณจะต้องปรับใช้แอปของคุณบนเซิร์ฟเวอร์ระดับที่ใช้งานจริง ในบรรดาชั้นการทำงานที่เพิ่มเข้ามาหลายชั้น เว็บเซิร์ฟเวอร์ควรมีฟังก์ชันพื้นฐานของเซิร์ฟเวอร์ HTTP

เว็บเซิร์ฟเวอร์ Python ควรจะสามารถจัดการคำขอ HTTP (คำขอ HTTP อย่างง่าย เช่น GET, PUT และ POST) จากไคลเอนต์ เช่น เว็บเบราว์เซอร์ และส่งคืนการตอบกลับ การตอบสนองนี้อาจรวมถึงรหัสสถานะ HTTP ที่ระบุว่าคำขอได้รับการประมวลผลสำเร็จหรือไม่ อาจประกอบด้วยหน้าเว็บ HTML และข้อมูลกึ่งโครงสร้าง เช่น JSON, XML และอื่นๆ
ASGI กับ WSGI: การทำความเข้าใจอินเทอร์เฟซเกตเวย์ของเซิร์ฟเวอร์
สมมติว่าคุณได้พัฒนาแอปพลิเคชัน Python ในกรอบงานที่คุณเลือก เช่น Django หรือ Flask เซิร์ฟเวอร์ทั่วไปอาจไม่สามารถเข้าใจและประมวลผลคำขอที่ส่งไปยังแอปพลิเคชัน Python ได้ นี่คือที่มาของอินเทอร์เฟซเกตเวย์เซิร์ฟเวอร์
อินเทอร์เฟซเกตเวย์นี้สามารถเป็น Web Server Gateway Interface ( WSGI ) หรือ Asynchronous Server Gateway Interface ( ASGI ) เว็บเซิร์ฟเวอร์ได้รับคำขอจากลูกค้า ซึ่งจากนั้นจะเปลี่ยนเส้นทางไปยังอินเทอร์เฟซเกตเวย์ของเซิร์ฟเวอร์ อินเทอร์เฟซ (WSGI/ASGI) โต้ตอบกับแอปพลิเคชัน Python ผ่าน callable ที่เปิดเผย

Web Server Gateway Interface ( WSGI ) จัดการคำขอตามลำดับ หากมีคำขอ HTTP ที่ช้าหลายครั้ง คำขอนั้นจะส่งผลต่อปริมาณงาน
Asynchronous Server Gateway Interface หรือ ASGI เป็นตัวต่อจาก WSGI และมีความสามารถเพิ่มเติมในการจัดการคำขอแบบอะซิงโครนัส
สมมติว่าคำขอที่ให้บริการในปัจจุบันต้องการการอ่านฐานข้อมูล (ซึ่งอาจใช้เวลานาน) และกำลังรอการตอบกลับ เมื่อคำขอแรกกำลังรอการตอบกลับ ASGI สามารถจัดการกับคำขอที่เข้ามาครั้งที่สองได้
ซึ่งตรงกันข้ามกับ WSGI ซึ่งคำขอแรกต้องได้รับการประมวลผลก่อนคำขอที่สอง ดังนั้น การใช้ ASGI อาจส่งผลให้มีปริมาณงานเพิ่มขึ้น ASGI ยังให้คุณใช้ความสามารถของ Python แบบอะซิงโครนัสภายในแอปพลิเคชันของคุณ
Python เว็บเซิร์ฟเวอร์
ตอนนี้ มาดูรายชื่อเว็บเซิร์ฟเวอร์ที่คุณสามารถใช้สำหรับแอปพลิเคชัน Python ของคุณ เรายังได้รวมกรอบงานบางอย่างที่ให้การสนับสนุนแบบสำเร็จรูปสำหรับเซิร์ฟเวอร์ที่พร้อมสำหรับการผลิต นี่ไม่ใช่รายการที่ละเอียดถี่ถ้วน และคำแนะนำของเว็บเซิร์ฟเวอร์ด้านล่างนี้ไม่ได้เรียงลำดับเฉพาะใดๆ
ยูวิคอร์น
หากคุณคุ้นเคยกับการพัฒนาแอปพลิเคชันด้วย FastAPI คุณจะพบกับ Uvicorn ซึ่งเป็นการนำเว็บเซิร์ฟเวอร์ไปใช้ Uvicorn เป็นการใช้งานเซิร์ฟเวอร์ ASGI สำหรับ Python

ในการติดตั้ง Uvicorn และการพึ่งพาที่เกี่ยวข้องโดยใช้ pip
ให้รันคำสั่งต่อไปนี้:
$ pip install uvicorn[standard] # includes installation of optional and Cython-based dependencies
ต่อไปนี้เป็นคุณสมบัติเด่นของ Uvicorn:
- การนำ ASGI ไปใช้
- รองรับการรันแอพจากสภาพแวดล้อม Python แบบอะซิงโครนัส
- เครื่องมือบรรทัดคำสั่งพร้อมรายการตัวเลือกมากมาย
- รองรับการรันแอพพลิเคชั่นจากฟังก์ชั่นโรงงาน
- ให้คุณสมบัติในการควบคุมอินสแตนซ์ของเซิร์ฟเวอร์โดยทางโปรแกรม
Gunicorn
Gunicorn เป็นเซิร์ฟเวอร์ WSGI สำหรับแอปพลิเคชัน Python ซึ่งเป็นที่รู้จักกันดีในด้านคุณสมบัติการจัดการกระบวนการขั้นสูง

Uvicorn ให้คลาสคนงาน Gunicorn ช่วยให้คุณบรรลุประสิทธิภาพและข้อได้เปรียบในการจัดการกระบวนการพร้อมกัน หน้าเอกสารนี้มีรายละเอียดเกี่ยวกับการปรับใช้ Gunicorn
หากคุณมี Python 3.5 ขึ้นไป คุณสามารถติดตั้ง Gunicorn โดยใช้ pip:
$ pip install gunicorn
ต่อไปนี้เป็นคุณสมบัติเด่นของ Gunicorn:
- ง่ายและรวดเร็ว
- เข้ากันได้กับเว็บเฟรมเวิร์กมากมาย
- รองรับการใช้งานกับพร็อกซีเซิร์ฟเวอร์ HTTP
- การจัดการกระบวนการขั้นสูง
CherryPy
CherryPy เป็นเว็บเฟรมเวิร์กของ Python เช่นเดียวกับ Django, Flask และ FastAPI แต่ไม่ได้รับความนิยมเท่ากับเฟรมเวิร์กเหล่านี้ CherryPy มีเวอร์ชันที่เสถียรหลายเวอร์ชันและได้พัฒนาเป็นเฟรมเวิร์กที่ครบถ้วนมากว่าทศวรรษ นอกจากนี้ยังมีชุมชนนักพัฒนาที่สนับสนุน

คุณสามารถตรวจสอบ Zen of CherryPy ที่น่าสนใจ ซึ่งสื่อถึงแก่นแท้ที่ CherryPy เป็นเฟรมเวิร์กที่เรียบง่ายแต่ทรงพลัง
CherryPy เป็นเฟรมเวิร์ก Python และไม่ใช่เว็บเซิร์ฟเวอร์ แต่อยู่ในรายการของเรา เนื่องจากรองรับเซิร์ฟเวอร์ระดับโปรดักชันโดยกำเนิด ซึ่งแตกต่างจากเฟรมเวิร์กอื่นๆ ส่วนใหญ่
ในการติดตั้ง CherryPy และเริ่มต้น ให้เรียกใช้:
$ pip install CherryPy
ต่อไปนี้เป็นคุณสมบัติเด่นของ CherryPy:
- เฟรมเวิร์ก Pythonic โดยใช้ Python เชิงวัตถุ เหมาะสำหรับผู้เริ่มต้น
- รองรับเซิร์ฟเวอร์ HTTP ที่พร้อมใช้งานจริง Cheroot
- เรียนรู้ได้ง่ายกว่าเว็บเฟรมเวิร์กอื่นๆ เช่น Django
- รองรับการสร้างและปรับใช้เว็บแอปอย่างง่ายกับไมโครเซอร์วิส
แดฟเน่
Django เป็นหนึ่งในเฟรมเวิร์กเว็บ Python ที่ได้รับความนิยมมากที่สุด หากคุณพัฒนาแอปพลิเคชันด้วย Django คุณอาจเคยใช้เว็บเซิร์ฟเวอร์ Daphne Daphne เป็นหนึ่งในการใช้งานเซิร์ฟเวอร์ ASGI แรกๆ ที่ใช้เป็นข้อมูลอ้างอิงสำหรับการใช้งานเซิร์ฟเวอร์ ASGI

Daphne พร้อมใช้งานเป็นแพ็คเกจ PyPI ที่คุณสามารถติดตั้งโดยใช้ pip
$ pip install daphne
ต่อไปนี้คือบทช่วยสอนโดยละเอียดที่จะแนะนำคุณเกี่ยวกับการสร้างแอปพลิเคชัน Python ที่พร้อมสำหรับการผลิตแบบฟูลสแตก
ต่อไปนี้เป็นคุณสมบัติเด่นของ Daphne:
- ใช้กันอย่างแพร่หลายในสภาพแวดล้อมการผลิต
- ข้อมูลอ้างอิงสำหรับการใช้งานเซิร์ฟเวอร์ ASGI ทั้งหมด
- รองรับโปรโตคอล HTTP, HTTP2 และ WebSocket
Python Trio
โปรเจ็กต์ Trio มีเป้าหมายเพื่อให้ความสามารถ I/O แบบอะซิงโครนัสระดับโปรดักชั่น: รองรับ I/O แบบขนานและการทำงานพร้อมกัน โปรเจ็กต์นี้ยังมีเว็บและไลบรารี HTTP Python จำนวนมาก

คุณสามารถติดตั้ง Trio รุ่นล่าสุด (มิถุนายน 2565) จาก PyPI
$ pip install trio
นี่คือรายการไลบรารี Trio ที่มีประโยชน์สำหรับการเขียนโปรแกรมเว็บด้วย Python:
-
hypercorn
: Hypercorn เป็นเซิร์ฟเวอร์ ASGI ที่รองรับ HTTP -
muffin
: Muffin เป็นเว็บเฟรมเวิร์ก ASGI สำหรับ Python -
startlette
: Starlette เป็นเฟรมเวิร์ก ASGI ที่มีน้ำหนักเบา -
trio-websocket
: รองรับเซิร์ฟเวอร์ WebSocket และไคลเอนต์ -
httpx
: ไคลเอนต์ HTTP สำหรับ Python
เว็บบิดเบี้ยว
Twisted เป็นเฟรมเวิร์กสำหรับแอปพลิเคชัน Python เฟรมเวิร์กที่ขับเคลื่อนด้วยเหตุการณ์นี้มีโมดูลสำหรับการเขียนโปรแกรมเว็บที่เรียกว่า twisted.web
คุณสามารถติดตั้ง Twisted และโมดูลที่เกี่ยวข้องโดยใช้ pip:
$ pip install Twisted
ต่อไปนี้เป็นคุณสมบัติเด่นของ Twisted:
- คุณสมบัติที่เป็นมิตรกับนักพัฒนา เช่น การทดสอบหน่วยและการตรวจสอบรหัสคงที่
-
twisted.web
ให้บริการเซิร์ฟเวอร์ WSGI และรองรับไคลเอนต์ HTTP และเซิร์ฟเวอร์
AIOHTTP
AIOHTTP เป็นไลบรารี Python ที่ให้ความสามารถด้านไคลเอ็นต์และเซิร์ฟเวอร์ผ่าน API ของไคลเอ็นต์และเซิร์ฟเวอร์
นี่คือวิดีโอที่มีประโยชน์ซึ่งอธิบายความสามารถในการเขียนโปรแกรมแบบอะซิงโครนัสในฝั่งไคลเอ็นต์เพื่อเพิ่มความเร็วให้กับคำขอไปยัง API อย่างมาก
ต่อไปนี้เป็นคุณสมบัติเด่นของ AIOHTTP:
- รองรับทั้งเซิร์ฟเวอร์ HTTP และการทำงานของไคลเอนต์
- รองรับการบันทึกเพื่อให้แก้ไขจุดบกพร่องได้ง่ายขึ้น จัดเตรียมการบันทึกสำหรับไคลเอ็นต์ เซิร์ฟเวอร์ ซ็อกเก็ตเว็บ และอื่นๆ
- การสนับสนุนดั้งเดิมสำหรับการทดสอบผ่านปลั๊กอิน pytest สำหรับการทดสอบ: pytest-aiohttp ซึ่งมีให้ใช้งานเป็นแพ็คเกจ PyPI
พายุทอร์นาโด
Tornado เป็นเว็บเฟรมเวิร์ก Python อื่นที่สนับสนุนเครือข่ายแบบอะซิงโครนัส ในช่วงไม่กี่ปีที่ผ่านมา Tornado เวอร์ชั่นเสถียรออกมามากมาย – เวอร์ชัน 6.2 ล่าสุดซึ่งเปิดตัวในเดือนกรกฎาคม 2022 ปัจจุบัน Tornado รองรับ Python 3.7 และใหม่กว่า

เช่นเดียวกับแพ็คเกจส่วนใหญ่ในรายการนี้ Tornado สามารถติดตั้งได้โดยใช้ pip
:
$ pip install tornado
ต่อไปนี้เป็นคุณสมบัติเด่นของพายุทอร์นาโด:
- รองรับพายุทอร์นาโดของเซิร์ฟเวอร์ HTTP
tornado.httpserver
เซิร์ฟเวอร์และไคลเอนต์ - ปรับขนาดได้และใช้เครือข่าย I/O . ที่ไม่ปิดกั้น
- เหมาะอย่างยิ่งสำหรับการใช้งานที่ต้องการการเชื่อมต่อเป็นระยะเวลานานขึ้นอย่างมาก
- ยูทิลิตี้สำหรับการบันทึก การทดสอบหน่วย และอื่นๆ
- การผสานรวมกับบริการสำหรับการรับรองความถูกต้องอย่างราบรื่น
ไมน์เฮลด์
Meinheld เป็นเซิร์ฟเวอร์ WSGI สำหรับ Python ใช้และสร้างไลบรารีที่มีอยู่สำหรับการจัดการเหตุการณ์และการประมวลผลคำขอ HTTP
คุณสามารถติดตั้ง Meinheld โดยใช้ pip:
$ pip install meinheld
คุณสมบัติบางอย่างของ Meinheld:
- ใช้ไลบรารี
http-parser
เพื่อจัดการคำขอ HTTP ขาเข้า - สร้างขึ้นบนไลบรารี
picoev
สำหรับการจัดการเหตุการณ์
บทสรุป
ฉันหวังว่าคุณจะพบว่ารายการเว็บเซิร์ฟเวอร์ Python นี้มีประโยชน์ อย่าลืมลองใช้ในโครงการในอนาคตของคุณ เราได้ระบุคุณสมบัติที่สำคัญ เพื่อให้เข้าใจถึงการพึ่งพาและวิธีการทำงานอย่างถ่องแท้ คุณจะต้องใช้มันในแอปพลิเคชันของคุณ
หากคุณต้องการเพิ่มระดับทักษะ Python ของคุณ ลองพิจารณาดูไลบรารีบทช่วยสอน Python ของ Geekflare มีความสุขในการเข้ารหัส!