WSGI实用程序和Web服务器之间的区别

时间:2014-01-11 05:06:35

标签: python wsgi

我是Python的新手,我无法理解Python中的服务器概念。

首先是什么是 WSGI ,什么是 Wsgiref Werkzeug ?它们与CherryPy WSGI Server,Gunicorn,Tornado(它们有何不同) HTTP服务器通过wsgi.WSGIContainer),Twisted Web,uWSGI,Waitress WSGI Server。

如果我需要从头开始开发Web应用程序,我的意思是从头开始,我应该从哪里开始,我的公司需要一个自定义框架,而应用程序是基于关键的性能开销。

请帮助解释它们的不同之处。

P.S我不是编程的初学者。

1 个答案:

答案 0 :(得分:9)

WSGI只是一套规则,有助于统一和标准化Python应用程序与Web服务器的通信方式。它定义了应用程序应如何发送响应以及服务器应如何与应用程序通信以及传递环境和有关请求的其他详细信息。任何需要与任何Web服务器通信的应用程序都实现WSGI,因为它是Python的事实标准和推荐方法。 WSGI开始统一其他实现(CGI,mod_python,FastCGI)。

wsgiref是WSGI接口的参考实现。它就像一个帮助开发人员了解如何在自己的应用程序中实现WSGI的蓝图。

您提到的其他内容都是实现WSGI标准的不同应用程序;除了一些例外:

  1. Twisted是一个用于创建可以通过网络进行通信的应用程序的库。 任何类型的网络和任何类型的应用程序。它不仅限于网络。

  2. Tornado类似于Twisted,因为它也是一个用于网络通信的库;但它是为非阻塞应用程序而设计的。需要长时间连接到服务器的东西(比如说,显示实时源的应用程序)。

  3. CherryPy是一个非常小的Python框架,用于创建Web应用程序。它实现 WSGI。

  4. Werkzeug是一个实现WSGI的库。因此,如果您正在开发一个需要说WSGI的应用程序,那么您将导入werkzeug,因为它提供了您需要的所有WSGI部分。

  5. uWSGI是一个允许轻松托管多个Web应用程序的项目。它在名称中作为WSGI的事实是因为WSGI是随应用程序发布的第一个插件。这可能是这个列表中的奇怪之处,因为它不是一个开发框架,而是一种管理多个Web应用程序的方法。

  6. 实现 WSGI的Web服务器可以与任何也实现WSGI的应用程序通信。 modwsgi是用于Web服务器的WSGI的流行实现;它适用于Apache和Nginx,而IIS则有isapi wsgi module