9 个 Python Web 服务器可供您下一个项目尝试
已发表: 2022-09-06在这篇文章中,我们展示了几个Python Web 服务器,您可以使用它们来部署 Python 应用程序。
我们将从了解 Web 服务器的工作原理以及对服务器网关接口的需求开始。 然后,我们将浏览 Python Web 服务器的列表以及它们的显着特性。 它们中的大多数都以 PyPI 包的形式提供,您可以在项目中安装并开始使用它们。
让我们开始!
什么是 Web 服务器?
在开发 Python 应用程序时,您将使用开发服务器来测试您的应用程序。 但是,一旦开发完成,您就必须在生产级服务器上部署您的应用程序。 在顶部的几层附加功能中,Web 服务器应该具有 HTTP 服务器的基本功能。

Python Web 服务器应该能够处理来自客户端(例如 Web 浏览器)的 HTTP 请求(简单的 HTTP 请求,如 GET、PUT 和 POST),并返回响应。 此响应可能包含指示请求是否成功处理的 HTTP 状态代码。 它可能包含 HTML 网页和半结构化数据,例如 JSON、XML 等。
ASGI 与 WSGI:了解服务器网关接口
假设您已经在您选择的框架中开发了一个 Python 应用程序,例如 Django 或 Flask。 传统服务器可能无法理解和处理定向到 Python 应用程序的请求。 这是服务器网关接口发挥作用的地方。
此网关接口可以是 Web 服务器网关接口 ( WSGI ) 或异步服务器网关接口 ( ASGI )。 Web 服务器接收来自客户端的请求,然后将其重定向到服务器网关接口。 接口 (WSGI/ASGI) 通过公开的可调用对象与 Python 应用程序交互。

Web 服务器网关接口 ( WSGI ) 按顺序处理请求。 如果有多个慢速 HTTP 请求,那么它们会影响吞吐量。
异步服务器网关接口或ASGI是 WSGI 的继承者,并且具有异步处理请求的额外能力。
假设当前服务的请求需要数据库读取(可能需要很长时间)并且正在等待响应。 当第一个请求正在等待响应时,ASGI 可以处理第二个传入请求。
这与 WSGI 不同,后者必须在第二个请求之前处理第一个请求。 因此,使用 ASGI 可能会导致吞吐量增加。 ASGI 还允许您在应用程序中使用异步 Python 功能。
Python Web 服务器
现在,让我们列出可用于 Python 应用程序的 Web 服务器。 我们还包括某些框架,为生产就绪的服务器提供开箱即用的支持。 这不是一个详尽的列表,下面的 Web 服务器建议没有任何特定的顺序。
优维康
如果您熟悉使用 FastAPI 进行应用程序开发,您就会遇到 Uvicorn,这是一个 Web 服务器实现。 Uvicorn 是 Python 的 ASGI 服务器实现。

要使用pip
安装 Uvicorn 和相关依赖项,请运行以下命令:
$ pip install uvicorn[standard] # includes installation of optional and Cython-based dependencies
以下是 Uvicorn 的显着特点:
- ASGI 实现
- 支持从异步 Python 环境运行应用程序
- 具有广泛选项列表的命令行工具
- 支持从工厂功能运行应用程序
- 提供以编程方式控制服务器实例的功能
独角兽
Gunicorn 是一个用于 Python 应用程序的 WSGI 服务器,以其先进的进程管理功能而闻名。

Uvicorn 提供了 Gunicorn 工人类,让您同时获得性能和流程管理优势。 此文档页面包含有关部署 Gunicorn 的详细信息。
如果你有 Python 3.5 及更高版本,你可以使用 pip 安装 Gunicorn:
$ pip install gunicorn
以下是 Gunicorn 的显着特点:
- 简单快速
- 与许多 Web 框架兼容
- 支持与 HTTP 代理服务器一起使用
- 先进的流程管理
樱桃派
CherryPy 是一个 Python Web 框架——就像 Django、Flask 和 FastAPI 一样——但不如这些框架流行。 CherryPy 已经有了几个稳定的版本,并且已经发展成为一个成熟的框架十多年了。 它还有一个支持性的开发者社区。

您可以查看有趣的 CherryPy Zen,它传达了 CherryPy 是一个简单、极简但功能强大的框架的精髓。
CherryPy 是一个 Python 框架而不是 Web 服务器,但它在我们的列表中,因为它与大多数其他框架不同,它原生支持生产级服务器。
要安装 CherryPy 并开始使用,请运行:
$ pip install CherryPy
以下是 CherryPy 的显着特点:
- 使用面向对象 Python 的 Pythonic 框架; 非常适合初学者
- 支持生产就绪的 HTTP 服务器 Cheroot
- 比其他 Web 框架(例如 Django)更容易学习
- 支持构建简单的 Web 应用程序并将其部署到微服务
芫
Django 是最流行的 Python Web 框架之一。 如果您使用 Django 开发过应用程序,那么您可能会使用 Daphne Web 服务器。 Daphne 是最早用作 ASGI 服务器实现参考的 ASGI 服务器实现之一。
Daphne 以 PyPI 包的形式提供,您可以使用 pip 进行安装。
$ pip install daphne
这是一个详细的教程,将引导您构建一个全栈生产就绪的 Python 应用程序。

以下是达芙妮的显着特点:
- 广泛应用于生产环境
- 所有 ASGI 服务器实现的参考
- 支持 HTTP、HTTP2 和 WebSocket 协议
蟒蛇三重奏
Trio 项目旨在提供生产级异步 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 框架startlette
: Starlette 是一个轻量级的 ASGI 框架trio-websocket
: 支持 WebSocket 服务器和客户端httpx
: Python 的 HTTP 客户端
扭曲的网络
Twisted 是 Python 应用程序的框架。 这个事件驱动的框架包括一个名为twisted.web
的 Web 编程模块。
你可以使用 pip 安装 Twisted 和相关的模块:
$ pip install Twisted
以下是 Twisted 的显着特点:
- 开发人员友好的功能,例如单元测试和静态代码检查
twisted.web
提供 WSGI 服务器并支持 HTTP 客户端和服务器
AIOHTTP
AIOHTTP 是一个 Python 库,它通过客户端和服务器 API 提供客户端和服务器端功能。
这是一个有用的视频,解释了客户端的异步编程功能,以显着加快对 API 的请求。
以下是 AIOHTTP 的显着特点:
- 支持 HTTP 服务器和客户端功能
- 支持日志记录,方便调试; 为客户端、服务器、Web 套接字等提供日志记录
- 原生支持通过 pytest 测试插件进行测试:pytest-aiohttp,可作为 PyPI 包使用
龙卷风
Tornado 是另一个支持异步网络的 Python Web 框架。 近年来,Tornado 出现了很多稳定版本,最新的 6.2 版本于 2022 年 7 月发布。目前,Tornado 支持 Python 3.7 及更高版本。

与此列表中的大多数软件包一样,Tornado 也可以使用pip
安装:
$ pip install tornado
以下是 Tornado 的显着特点:
- 支持 HTTP 服务器
tornado.httpserver
和客户端 - 可扩展并使用非阻塞网络 I/O
- 非常适合需要长时间连接的应用程序
- 用于日志记录、单元测试等的实用程序
- 与身份验证服务无缝集成
迈海德
Meinheld 是 Python 的 WSGI 服务器。 它使用并构建用于事件处理和 HTTP 请求处理的现有库。
您可以使用 pip 安装 Meinheld:
$ pip install meinheld
Meinheld 的一些特点:
- 使用
http-parser
库处理传入的 HTTP 请求 - 构建在
picoev
库之上以进行事件处理
结论
我希望您发现这篇 Python Web 服务器列表对您有所帮助。 一定要在你未来的项目中尝试一下。 我们列出了主要功能; 要完全了解依赖关系及其工作方式,您必须在应用程序中使用它们。
如果您想提高您的 Python 技能,请考虑查看 Geekflare 的 Python 教程库。 快乐编码!