尝试用于您下一个项目的9个Python Web服务器

在这个列表中,我们介绍了几个可以用来部署Python应用程序的Python web服务器

首先,我们将了解Web服务器的工作原理和服务器网关接口的需求。然后,我们将列出Python web服务器的列表以及它们的特点。它们中的大多数都可以作为PyPI packages安装和在您的项目中使用。

让我们开始吧!

什么是Web服务器?

在开发Python应用程序时,您将使用开发服务器进行调试。然而,一旦开发完成,您将需要将应用程序部署到一个生产级别的服务器上。在添加了许多附加功能之后,一个Web服务器应该具有基本的服务器功能。

Python Web服务器应该能够处理来自客户端(如Web浏览器)的HTTP请求(诸如GET,PUT和POST等简单的HTTP请求)并返回响应。这个响应可能包括指示请求是否成功处理的HTTP状态码。它可能包含HTML网页和半结构化数据,如JSON, XML等。

ASGI vs. WSGI: 理解服务器网关接口

假设您使用您选择的框架(如Django或Flask)开发了一个Python应用程序。传统服务器可能无法理解和处理针对Python应用程序的请求。这就是服务器网关接口发挥作用的地方。

该网关接口可以是Web Server Gateway Interface (WSGI)或异步服务器网关接口(ASGI)。Web服务器接收来自客户端的请求,然后将其重定向到服务器网关接口。接口(WSGI / ASGI)通过一个可调用对象与Python应用程序进行交互。

Web服务器网关接口 (WSGI)按顺序处理请求。如果有多个慢速HTTP请求,那么它们将影响吞吐量。

异步服务器网关接口 (ASGI) 是WSGI的继任者,并且具有处理异步请求的附加功能。

假设当前正在服务的请求需要读取数据库(可能需要很长时间)并等待响应。当第一个请求等待响应时,ASGI可以处理第二个传入请求。

这与WSGI不同,WSGI必须在处理第二个请求之前处理第一个请求。因此,使用ASGI可能会增加吞吐量。ASGI还可以让您在应用程序中使用链接_5的功能。

Python Web服务器

现在,让我们列出您可以用于Python应用程序的Web服务器。我们还包括了一些提供生产就绪服务器的框架。这不是一个详尽无遗的列表,下面的Web服务器建议没有特定的顺序。

Uvicorn

如果您熟悉使用FastAPI进行应用程序开发,那么您可能已经遇到过Uvicorn,它是一个Python的Web服务器实现。Uvicorn是一个用于Python的ASGI服务器实现。

要使用pip安装Uvicorn和相关依赖项,请运行以下命令:

$ pip install uvicorn[standard] 
# 包括可选和基于Cython的依赖项的安装

以下是Uvicorn的特点:

  • ASGI实现
  • 支持从异步Python环境运行应用程序
  • 具有广泛选项列表的命令行工具
  • 支持从工厂函数运行应用程序
  • 提供以编程方式控制服务器实例的功能

Gunicorn

Gunicorn 是一个用于Python应用程序的WSGI服务器,以其先进的进程管理功能而闻名。

Uvicorn提供了一个Gunicorn工作类,使您能够同时实现性能和进程管理优势。本文档页面包含有关deploying Gunicorn的详细信息。

如果您使用Python 3.5及更高版本,可以使用pip安装Gunicorn:

$ pip install gunicorn

Gunicorn的主要特点如下:

  • 简单快速
  • 与许多网络框架兼容
  • 支持与HTTP proxy server的使用
  • 先进的进程管理

CherryPy

CherryPy是一个Python网络框架,类似于Django、Flask和FastAPI,但不像这些框架那样流行。CherryPy已经存在并发展成为一个完善的框架已有十多年了。它还有一个支持性的developer community

您可以查看有趣的Zen of CherryPy,它传达了CherryPy是一个简单而简约但功能强大的框架的精髓。

CherryPy是一个Python框架,而不是一个Web服务器,但它在我们的列表中,因为它原生支持生产级服务器,而大多数其他框架都不支持。

要安装CherryPy并开始使用,请运行:

$ pip install CherryPy

CherryPy的主要特点如下:

  • 使用面向对象的Python编写的Pythonic框架,非常适合初学者
  • 支持用于生产就绪的HTTP服务器Cheroot
  • 比其他诸如Django等Web框架更容易学习
  • 支持构建和部署简单的Web应用程序到微服务

Daphne

Django是最受欢迎的Python网络框架之一。如果您使用Django开发应用程序,您可能会使用到Daphne Web服务器。Daphne是最早用作ASGI服务器实现参考的ASGI服务器实现之一。

Daphne可以作为一个PyPI软件包安装,您可以使用pip安装。

$ pip install daphne

这是一个详细的教程,将指导您构建一个完整的生产级Python应用程序。

Daphne的主要特点如下:

  • 在生产环境中被广泛采用
  • 所有ASGI服务器实现的参考
  • 支持HTTP、HTTP2和WebSocket协议

Python Trio

Trio project旨在提供生产级异步I/O功能:支持并行I/O和并发。该项目还有几个用于Web和HTTP的Python库。

您可以从PyPI安装最新版本的Trio(2022年6月)。

$ pip install trio

以下是用于Python Web编程的有用的Trio库列表:

  • hypercorn:Hypercorn是一个支持HTTP的ASGI服务器
  • muffin:Muffin是一个用于Python的ASGI Web框架
  • starlette:Starlette是一个轻量级的ASGI框架
  • trio-websocket:支持WebSocket server和客户端
  • httpx:Python的HTTP客户端

Twisted Web

Twisted是一个用于Python应用程序的框架。这个事件驱动的框架包括一个用于Web编程的模块twisted.web

您可以使用pip安装Twisted及其相关模块:

$ pip install Twisted

Twisted的主要特点如下:

  • 开发人员友好的功能,如单元测试和静态代码检查
  • twisted.web提供了一个WSGI服务器和对HTTP客户端和服务器的支持

AIOHTTP

AIOHTTP是一个Python库,通过客户端和服务器API提供客户端和服务器端功能。

这里有一个有用的视频,解释了客户端的asynchronous编程能力,可以显著加快对API的请求速度。

AIOHTTP的主要特点如下:

  • 支持HTTP服务器和客户端功能
  • 支持记录日志以便更容易进行调试;为客户端、服务器、Web套接字等提供记录日志的功能
  • 原生支持通过pytest插件进行测试:pytest-aiohttp,可作为PyPI软件包使用

Tornado

Tornado是另一个支持异步网络的Python Web框架。近年来,Tornado有许多稳定版本的发布,最新版本为6.2,于2022年7月发布。目前,Tornado支持Python 3.7及更高版本。

与列表中的大多数软件包一样,Tornado也可以使用pip进行安装:

$ pip install tornado

Tornado的主要特点如下:

  • 支持HTTP服务器tornado.httpserver和客户端
  • 可扩展且使用非阻塞的网络I/O
  • 非常适合需要长时间连接的应用程序
  • 提供记录日志、unit testing等实用工具
  • 与身份验证服务无缝集成

Meinheld

Meinheld是Python的WSGI服务器。它使用和构建现有的库来处理事件和HTTP请求。

您可以使用pip安装Meinheld:

$ pip install meinheld

Meinheld的一些特点:

  • 使用http-parser库来处理传入的HTTP请求
  • 在事件处理方面建立在picoev库的基础上

结论

希望您会发现这个Python Web服务器列表有帮助。请务必在将来的projects中尝试它们。我们列出了关键特性;要完全理解依赖关系和它们的工作原理,您需要在应用程序中使用它们。👩🏽‍💻

如果您想提升您的Python技能,请考虑查看Geekflare的Python tutorials库。祝您编码愉快!

类似文章