我为什么要使用WSGI?

e-s*_*tis 17 python wsgi

一直在使用mod_python,我读了越来越多关于WSGI有多好的文章,没有真正理解为什么.

那我为什么要切换到呢?有什么好处?这很难,学习曲线值得吗?

Sha*_*mar 10

为了在Python中开发复杂的Web应用程序,您可能会使用更全面的Web开发框架,如DJango,Zope,Turbogears等.作为应用程序开发人员,您不必太担心WSGI.您需要注意的是,这些框架支持WSGI.WSGI允许分离Web服务器和Web应用程序代码,只要Web应用程序符合WSGI,系统管理员就可以更改Web服务器.如果您正在开发其中一个框架,那么无论如何都要满足这个条件.

如果您是一个Web框架开发人员(正在开发DJango或Zope本身),那么您必须更深入地了解WSGI.


Sim*_*onJ 10

mod_wsgi与mod_python:

  • mod_wsgi有点快(内部有更多的C,更少的Python)
  • mod_wsgi进程可以与Apache隔离,从而提高安全性/稳定性,同时降低内存使用率[1]
  • mod_python使您可以访问Apache的一些内部

WSGI一般:

  • 大量可重用的中间件(身份验证/授权,会话内容,缓存,过滤)
  • 通过本机WSGI支持或flup轻松部署非Apache Web服务器

[1] - 与preforking Apache相比,它在每个进程中维护一个单独的Python解释器


iva*_*ncz 6

那么我为什么要切换到它呢?有什么好处?

通常,如果您有像 NGINX 或 Apache 这样的 Web 服务器,则必须启用模块(尽管两种情况下模块的配置不同)。

WSGI 是 PEP 3333 上描述的标准,基本上提供了用 Python 编写的 Web 应用程序和 Web 服务器之间的标准接口。

这意味着,WSGI 为您的 Python Web 应用程序提供了跨许多不同 Web 服务器的可移植性,而无需在 NGINX、Apache 等上进行任何额外配置。

除此之外,与 Web 服务器相比,WSGI 服务器可以为您提供更多功能和更大的灵活性。Gunicorn提供了很多功能,例如:

  • 用于处理请求的工作线程数
  • 同时客户端的最大数量。
  • 最大挂起连接数。
  • 限制 HTTP 请求标头字段允许的大小。
  • 重新启动之前工作线程将处理的最大请求数。

是有关 Gunicorn 支持的选项的完整文档。


这很难吗?学习曲线值得吗?

作为软件开发人员,您不需要了解有关标准的每个细节,但作为系统管理员,您可能需要了解更多一点,而不仅仅是做pip install gunicorn等等。

参考