暂时使用mod_python,我读了越来越多关于WSGI有多好的文章,而没有真正理解为什么。
那我为什么要切换到呢?有什么好处?这很难,学习曲线值得吗?
答案 0 :(得分:10)
mod_wsgi与mod_python:
WSGI一般:
[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提供了许多功能,例如:
Here是关于Gunicorn支持的选项的完整文档。
作为系统管理员,您不需要了解有关标准的每个细节,但作为软件开发人员,您可能需要了解更多,而不仅仅是pip install gunicorn
等等。
答案 5 :(得分:0)
WSGI是标准API,它允许您选择Web服务器,并在其前面放置一个WSGI管道,如Repoze。