Tin tức và phân tích của tất cả các thiết bị di động

9 Máy chủ web Python để thử dự án tiếp theo của bạn

Trong danh sách này, chúng tôi giới thiệu cho bạn một số máy chủ web Python mà bạn có thể sử dụng để triển khai các ứng dụng Python.

Chúng ta sẽ bắt đầu bằng cách tìm hiểu cách máy chủ web hoạt động và nhu cầu của giao diện cổng máy chủ. Tiếp theo, chúng tôi sẽ giới thiệu danh sách các máy chủ web Python cùng với các tính năng quan trọng nhất của chúng. Hầu hết chúng đều có sẵn dưới dạng gói PyPI mà bạn có thể cài đặt và bắt đầu sử dụng trong các dự án của mình.

Hãy bắt đầu!

một máy chủ web là gì?

Khi phát triển ứng dụng Python, bạn sẽ sử dụng máy chủ phát triển để kiểm tra ứng dụng của mình. Tuy nhiên, sau khi quá trình phát triển hoàn tất, bạn sẽ cần triển khai ứng dụng của mình lên một máy chủ cấp sản xuất. Trong số một số lớp tính năng bổ sung ở trên cùng, máy chủ web phải có chức năng máy chủ HTTP cơ bản.

Máy chủ web python sẽ có thể xử lý các yêu cầu HTTP (các yêu cầu HTTP đơn giản như GET, PUT và POST) từ các máy khách như trình duyệt web và trả về phản hồi. Phản hồi này có thể chứa mã trạng thái HTTP cho biết liệu yêu cầu có được xử lý thành công hay không. Nó có thể bao gồm các trang web HTML và dữ liệu bán cấu trúc như JSON, XML và các dữ liệu khác.

ASGI so với WSGI: Tìm hiểu giao diện cổng máy chủ

Giả sử bạn đã tạo một ứng dụng python trong khung tùy chọn, chẳng hạn như Django hoặc Flask. Một máy chủ thông thường có thể không hiểu và xử lý các yêu cầu đối với các ứng dụng Python. Đây là nơi giao diện cổng máy chủ phát huy tác dụng.

Giao diện cổng này có thể là Giao diện cổng máy chủ web (WSGI) hoặc Giao diện cổng máy chủ không đồng bộ (ASGI). Máy chủ web nhận được yêu cầu từ máy khách, sau đó nó sẽ chuyển hướng đến giao diện cổng của máy chủ. Giao diện (WSGI/ASGI) tương tác với ứng dụng python thông qua khả năng gọi được cung cấp.

Giao diện cổng máy chủ web (WSGI) xử lý tuần tự các yêu cầu. Nếu có nhiều yêu cầu HTTP chậm, chúng sẽ ảnh hưởng đến thông lượng.

Giao diện cổng máy chủ không đồng bộ hoặc ASGI là sự kế thừa của WSGI và có khả năng bổ sung để xử lý các yêu cầu không đồng bộ.

Giả sử rằng yêu cầu hiện được xử lý cần đọc cơ sở dữ liệu (có thể mất nhiều thời gian) và đang chờ phản hồi. Trong khi yêu cầu đầu tiên đang chờ phản hồi, ASGI có thể xử lý yêu cầu đến thứ hai.

Điều này trái ngược với WSGI khi yêu cầu đầu tiên phải được xử lý cho yêu cầu thứ hai. Do đó, sử dụng ASGI có thể làm tăng thông lượng. ASGI cũng cho phép bạn tận dụng các khả năng không đồng bộ của Python trong ứng dụng của mình.

Máy chủ web Python

Bây giờ hãy liệt kê các máy chủ web mà bạn có thể sử dụng trong các ứng dụng python của mình. Chúng tôi cũng đã bao gồm một số khung cung cấp hỗ trợ vượt trội cho các máy chủ sẵn sàng sản xuất. Đây không phải là danh sách đầy đủ và các đề xuất máy chủ web bên dưới không theo bất kỳ thứ tự cụ thể nào.

uvicorn

Nếu bạn đã quen với việc phát triển ứng dụng bằng FastAPI, bạn sẽ bắt gặp Uvicorn, một triển khai máy chủ web. Uvicorn là một triển khai máy chủ ASGI cho Python.

Để cài đặt Uvicorn và các phụ thuộc liên quan bằng pip, hãy chạy lệnh sau:

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

Dưới đây là các tính năng quan trọng nhất của Uvicorn:

  • triển khai ASGI
  • Hỗ trợ khởi chạy ứng dụng từ môi trường Python không đồng bộ
  • Công cụ dòng lệnh với danh sách tùy chọn phong phú
  • Hỗ trợ khởi chạy ứng dụng từ các chức năng của nhà máy
  • Cung cấp các chức năng để điều khiển phiên bản máy chủ theo chương trình

bắp súng

Gunicorn là một máy chủ WSGI dành cho các ứng dụng Python nổi tiếng với các tính năng quản lý quy trình nâng cao.

Uvicorn cung cấp lớp công nhân Gunicorn đồng thời cho phép bạn đạt được hiệu quả và lợi ích quản lý quy trình cùng một lúc. Trang tài liệu này cung cấp chi tiết về cách triển khai Gunicorn.

Nếu bạn có con trăn 3.5 hoặc mới hơn, bạn có thể cài đặt Gunicorn bằng pip:

$ pip install gunicorn

Dưới đây là các tính năng quan trọng nhất của Gunicorn:

  • Đơn giản và nhanh chóng
  • Tương thích với nhiều khung web
  • Hỗ trợ sử dụng với proxy HTTP
  • Quản lý quy trình nâng cao

anh đào

CherryPy là một khung web Python – như Django, Flask và FastAPI – nhưng không phổ biến bằng các khung này. Với một số bản phát hành ổn định, CherryPy đã xuất hiện và phát triển thành một framework chính thức trong hơn một thập kỷ. Nó cũng có một cộng đồng nhà phát triển hỗ trợ.

Bạn có thể xem Zen thú vị của CherryPy truyền đạt bản chất rằng CherryPy là một khung đơn giản và tối giản nhưng mạnh mẽ.

CherryPy là một khung công tác Python, không phải máy chủ web, nhưng nó nằm trong danh sách của chúng tôi vì nó vốn hỗ trợ máy chủ cấp sản xuất – không giống như hầu hết các khung công tác khác.

Để cài đặt CherryPy và bắt đầu, hãy chạy:

$ pip install CherryPy

Dưới đây là các tính năng chính của CherryPy:

  • Khung Python sử dụng Python hướng đối tượng; rất thích hợp cho người mới bắt đầu
  • Hỗ trợ cho máy chủ HTTP sẵn sàng sản xuất, Cheroot
  • Dễ học hơn các khung web khác như Django
  • Hỗ trợ tạo và triển khai các ứng dụng web đơn giản trong microservice

daphne

Django là một trong những khung web Python phổ biến nhất. Nếu bạn đã phát triển các ứng dụng trong Django, có lẽ bạn đã sử dụng máy chủ web Daphne. Daphne là một trong những triển khai máy chủ ASGI đầu tiên, được sử dụng làm tài liệu tham khảo cho việc triển khai máy chủ ASGI.

Daphne có sẵn dưới dạng gói PyPI có thể được cài đặt bằng pip.

$ pip install daphne

Dưới đây là hướng dẫn từng bước hướng dẫn bạn cách tạo một ứng dụng Python hoàn chỉnh sẵn sàng cho sản xuất.

Dưới đây là những tính năng quan trọng nhất của Daphne:

  • Được sử dụng rộng rãi trong môi trường sản xuất
  • Tham chiếu đến tất cả các triển khai máy chủ ASGI
  • Hỗ trợ các giao thức HTTP, HTTP2 và WebSocket

Bộ ba trăn

Project Trio nhằm mục đích cung cấp các khả năng I/O không đồng bộ cấp sản xuất: hỗ trợ cho I/O song song và đồng thời. Dự án này cũng có một số thư viện web và HTTP Python.

Bạn có thể cài đặt phiên bản Trio mới nhất (tháng 6 năm 2022) từ PyPI.

$ pip install trio

Dưới đây là danh sách các thư viện Trio hữu ích để phát triển web Python:

  • hypercorn: Hypercorn là máy chủ ASGI hỗ trợ HTTP
  • bánh nướng xốp: Muffin là một khung web ASGI cho Python
  • startlette: Starlette là một khung ASGI nhẹ
  • bộ ba websocket: Hỗ trợ máy chủ và máy khách WebSocket
  • httpx: Máy khách HTTP cho Python

mạng xoắn

Twisted là một framework cho các ứng dụng Python. Khung dựa trên sự kiện này bao gồm một mô-đun phát triển web có tên là twist.web.

Bạn có thể cài đặt Twisted và các mô-đun liên quan với pip:

$ pip install Twisted

Dưới đây là các tính năng quan trọng nhất của Twisted:

  • Các tính năng thân thiện với nhà phát triển như kiểm tra đơn vị và kiểm tra mã tĩnh
  • twist.web cung cấp máy chủ WSGI và hỗ trợ cho các máy khách và máy chủ HTTP

AIOHTTP

AIOHTTP là một thư viện python cung cấp các khả năng phía máy khách và máy chủ thông qua API máy khách và máy chủ.

Đây là một video hữu ích giải thích những gì lập trình phía máy khách không đồng bộ có thể làm để tăng tốc đáng kể các yêu cầu đối với API.

Dưới đây là các tính năng chính của AIOHTTP:

  • Hỗ trợ cho cả chức năng máy chủ HTTP và máy khách
  • Hỗ trợ đăng nhập để tạo điều kiện gỡ lỗi; cung cấp ghi nhật ký cho máy khách, máy chủ, ổ cắm web và hơn thế nữa
  • Hỗ trợ riêng để thử nghiệm bằng plugin pytest để thử nghiệm: pytest-aiohttp có sẵn dưới dạng gói PyPI

Lốc xoáy

Tornado là một khung web Python khác hỗ trợ các mạng không đồng bộ. Trong những năm gần đây, đã có nhiều bản phát hành ổn định của Tornado – phiên bản mới nhất 6.2 được phát hành vào tháng 7 năm 2022. Tornado hiện hỗ trợ Python 3.7 và mới hơn.

Giống như hầu hết các gói trong danh sách này, Tornado cũng có thể được cài đặt bằng pip:

$ pip install tornado

Dưới đây là các tính năng chính của Tornado:

  • Hỗ trợ máy chủ HTTP Tornado.httpserver và client
  • Có thể mở rộng và sử dụng I/O mạng không chặn
  • Rất phù hợp cho các ứng dụng yêu cầu kết nối trong thời gian dài hơn nhiều
  • Công cụ để ghi nhật ký, kiểm tra đơn vị và hơn thế nữa
  • Tích hợp liền mạch với các dịch vụ xác thực

tôi

Meinheld là một máy chủ WSGI dành cho Python. Nó sử dụng và xây dựng các thư viện hiện có để xử lý các sự kiện và xử lý các yêu cầu HTTP.

Bạn có thể cài đặt Meinheld bằng pip:

$ pip install meinheld

Một số tính năng của Meinheld:

  • Nó sử dụng thư viện trình phân tích cú pháp http để xử lý các yêu cầu HTTP đến
  • Nó dựa vào thư viện picoev để xử lý sự kiện

Đăng kí

Tôi hy vọng bạn thấy danh sách máy chủ web Python này hữu ích. Hãy chắc chắn để thử chúng trong các dự án tương lai của bạn. Chúng tôi đã liệt kê các tính năng quan trọng nhất; để hiểu đầy đủ về các phụ thuộc và cách chúng hoạt động, bạn sẽ cần sử dụng chúng trong các ứng dụng của mình. 👩🏽‍💻

Nếu bạn muốn cải thiện kỹ năng Python của mình, hãy cân nhắc xem thư viện hướng dẫn về python newsblog.pl. Chúc mừng mã hóa!