我为什么要使用WSGI?

时间:2009-11-28 18:54:52

标签: python wsgi

暂时使用mod_python,我读了越来越多关于WSGI有多好的文章,而没有真正理解为什么。

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

6 个答案:

答案 0 :(得分: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解释器

答案 1 :(得分:9)

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

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

答案 2 :(得分:2)

大多数Python框架都实现了wsgi。 apache有mod_wsgi,其他有SCGI / FastCGI / AJP模块+ Flup。这样,您就可以拥有单独的Python流程的所有优势,而无需绑定到一个Web服务器。

答案 3 :(得分:1)

您不必重新学习,因为从开发人员的角度来看,差异只是一个小包装器和一些服务器配置。

从部署的角度来看,不同之处在于您的python代码与Web浏览器位于不同的进程中,这意味着

a)python进程可以作为Web服务器之外的另一个用户运行。如果使用得当,这对安全性有价值。

b)Web服务器进程不需要包含python运行时。如果服务器运行大量“其他”请求(静态文件等)和一些繁重的python请求,这可以大大提高性能。

答案 4 :(得分:1)

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

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

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

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

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

  • 处理请求的工作线程数
  • 最大并发客户端数。
  • 最大挂起连接数。
  • 限制HTTP请求标头字段的允许大小。
  • 工作人员在重新启动之前将处理的最大请求数。

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


难道,学习曲线值得吗?

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

参考

答案 5 :(得分:0)

WSGI是标准API,它允许您选择Web服务器,并在其前面放置一个WSGI管道,如Repoze。

请参阅http://repoze.org/