Python 3的WSGI服务器(PEP 3333)

4 投票
7 回答
4905 浏览
提问于 2025-04-17 02:19

Python 3有哪些可用的WSGI服务器,和PEP 3333有什么关系呢?

7 个回答

5

根据PEP 3333,最新版本的mod_wsgi(3.3)可以和Python 3一起使用。

http://code.google.com/p/modwsgi/

“最初的WSGI规范(PEP 333)只支持Python 2.X。mod_wsgi对Python 3.X的支持是基于对Python 3.X的WSGI规范的猜测。新的WSGI规范(PEP 3333)现在已经被接受,虽然mod_wsgi需要做一些调整以使其更严格,但如果你按照PEP 3333来编写你的Python 3 WSGI应用程序,它在mod_wsgi上会运行得很好。如果你想尝试Python 3.X,你需要使用Python 3.1或更高版本。”

8

Waitress

Waitress 是一个纯Python编写的WSGI服务器,适合用在生产环境中,性能也很不错。它只依赖Python标准库里的东西,运行在Unix和Windows系统上,支持Python 2.6及以上版本和Python 3.2及以上版本。它还可以在UNIX的PyPy 1.6.0上运行。Waitress支持HTTP/1.0和HTTP/1.1协议。

下面是他们网站上关于为什么要开发Waitress的一个引用:

为什么?

在Waitress发布的时候,已经有很多纯Python的WSGI服务器了。那我们为什么还需要一个新的呢?

Waitress的目标是帮助那些需要广泛平台支持的网页框架开发者。它既不是最快的,也不是最炫的WSGI服务器,但使用它可以减少文档的复杂性(比如生产环境和部署环境、Windows和Unix、Python 3和Python 2、PyPy和CPython之间的区别),从而减少用户的困惑。因为当时(大约2012年)现有的WSGI服务器在平台支持上有些不稳定。例如,gunicorn很好,但不支持Windows;paste.httpserver也不错,但不支持Python 3,而且没有专门的测试套件来确保Python 3的移植工作正常。wsgiref在大多数Python版本下都能正常工作,但速度较慢,不推荐用于生产环境,因为它是单线程的,并且没有经过安全审计。

在写这段话的时候,一些现有的WSGI服务器已经声称支持广泛的平台,并且有可用的测试套件。例如,CherryPy WSGI服务器支持Python 2和Python 3,可以在UNIX或Windows上运行。然而,它并不是单独分发的,而是和它的名字相同的网页框架一起发布。让一个非CherryPy的网页框架依赖于CherryPy的分发,仅仅是为了使用它的服务器组件,这样做有点尴尬。CherryPy服务器的测试套件也依赖于CherryPy网页框架,所以即使我们把它的服务器组件分离出来,我们仍然需要为所有的测试补充内容。CherryPy团队已经开始着手开发Cheroot,应该能解决这个问题。

Waitress是从zope.server中分支出来的WSGI相关组件。zope.server本身就有不错的框架无关的测试覆盖率,在分支过程中又增加了很多覆盖率。zope.server自2001年以来就以某种形式存在,并且一直在生产环境中使用,所以Waitress并不是“另一个”服务器,而是对一个已经被证明能很好工作的旧服务器的重新打包。

8

正如Gabriel所提到的,Apache/mod_wsgi 3.X版本支持Python 3。其他的选择有CherryPy WSGI服务器和uWSGI

撰写回答