跳转到: 导航, 搜索

SGI-服务器比较

WSGI/ASGI 服务器作为 Python Web 应用程序和 Web 服务器之间的重要网关,确保了流畅高效的通信。它们提供了一个标准化的接口,促进请求和响应管理,增强了应用程序的性能和可扩展性,并允许开发人员专注于功能开发,而无需处理 HTTP 请求处理的底层细节。

这种抽象和灵活性使 WSGI/ASGI 服务器成为部署现代和高性能 Python Web 应用程序不可或缺的工具。

旧框架不被认为是好的候选者:cherrypy, twisted, sanic, tornado 这些旧框架仅在此处引用,以概述当前的技术水平。由于一些框架,例如 tornado,几年前就已经在 OpenStack 中被 Eventlet 替代,因此这些旧框架不被认为是合适的候选者。

请将您的评论和意见放入相关的 etherpad: https://etherpad.opendev.org/p/eventlet-removal-SGI-servers-comparison

Web 框架比较,请在此处进行 https://wiki.openstack.org/wiki/web-frameworks-comparison

HTTP 库(客户端库)比较,请在此处进行 https://wiki.openstack.org/wiki/Http-libraries-comparison

以下是 Python 社区中可用的主要 WSGI 和 ASGI 服务器的比较

服务器 WSGI 支持 ASGI 支持 积极维护 asyncio 支持 HTTP/1.0 HTTP/1.1 HTTP/2 评论
uWSGI Yes 有限 适中。已进入维护模式,这意味着我们不应期望对新协议(如 HTTP/2 等)的支持。 https://github.com/unbit/uwsgi/blob/master/README 有限 Yes Yes 通常与反向代理(Nginx, Caddy)一起用于 HTTP/2
Uvicorn Yes 非常活跃 完成 Yes 部分 实验性的 HTTP/2 支持,针对 ASGI 进行了优化
Hypercorn 是(有局限性) Yes 中等 完成 Yes Yes Yes 完全支持 HTTP/2,无需代理
Gunicorn Yes 是(使用 worker) 安静 部分 Yes Yes 通过 worker(如 `UvicornWorker`)支持 ASGI
Daphne Yes 安静 完成 Yes 针对 Django Channels 和 WebSockets 进行了优化
Waitress Yes 中等 有限 Yes Yes 纯 WSGI 服务器,简单可靠,适用于同步应用程序
Bjoern Yes 适度活跃 有限 Yes Yes 用 C 编写的超快速 WSGI 服务器,适用于高性能
CherryPy Yes 安静 有限 Yes Yes 包含自己的 WSGI 服务器,通常在生产环境中用于其他服务器的后端
Tornado 部分(通过适配器) 活跃 完整(自有模型) Yes 部分 异步框架,内置服务器,适用于实时应用程序
Twisted 是(通过 `twisted.web.wsgi`) 非常活跃 基于 Twisted Yes 强大的异步网络库,使用自己的异步模型
Sanic 是(通过适配) 活跃 完成 Yes 部分 异步 Web 框架,针对高性能进行了优化