2016-05-03 396 views
8

official doc说:Werkzeug究竟是什么?

WERKZEUG是一个用于Python的WSGI实用工具库。

然而,当我跑我的瓶的Web应用程序,我注意到,在从服务器的响应报头,也表明

HTTP/1.0 200 OK 
Content-Type: text/html; charset=utf-8 
Content-Length: 13 
Server: Werkzeug/0.11.9 Python/2.7.10 
Date: Tue, 03 May 2016 12:50:08 GMT 

在第四行就表示,服务器Werkzeug

为什么不是这个意思Werkzeug是一个像Apache?的网络服务器。

回答

1

不,它不是像Apache这样的WEB服务器。这是一个CGI库。由于APACHE(或您的FLASK应用程序)可能使用该库来服务某些HTTP请求,因此可能会将该头添加到响应中。

+0

是否有检查Web应用程序使用完全相同的服务器的任何方法?我认为请求标题会在'Server:'行显示服务器。 –

+0

通常,“服务器”标题中的内容是准确的。但是请记住,如果有人想隐藏这些信息,她可以很容易地将该标题更改为任何她想要的(如果她是运行网络服务器的) –

+0

在这种情况下,标题信息最可能是正确的。由于'werkzeug'确实附带了一个小型开发网络服务器 - 这可能是产生上述响应的原因。我们只能确定OP是否能更详细地解释他的设置...... – sebastian

9

因为不是。

在您的设置中,最有可能使用“开发服务器”(run_simple函数)进行测试。 因此,在这种使用情况下,像(非常)穷人的Apache,但只是在某种意义上它能够正确回答HTTP请求。

如果检查文档 http://werkzeug.pocoo.org/docs/serving/ ,你会看到下面的注释:

开发服务器是不是要在生产系统中使用。它是专门为开发目的而设计的,在高负载下表现不佳。对于部署设置,请查看Application Deployment页面。

5

不,它不是

WERKZEUG(WSGI库)就像是你的Python代码和HTTP的nginx/Apache服务器

这之间的沟通 是完整的用例Werkzeug WSGI:

WSGI有两方面:“服务器”或“网关”方(通常是网站例如Apache或Nginx),以及“应用程序”或“框架”端(Python脚本本身)。为了处理WSGI请求,服务器端 执行应用程序,并向应用程序端提供环境信息和回调函数 。应用程序处理 请求,并使用它提供的回调函数将响应返回给服务器端。

在服务器和 应用程序之间,可能有一个WSGI中间件,它实现了API的两个方面 。服务器收到来自客户端的请求,并将其转发给中间件。处理完成后,它向 发送请求。应用程序的响应由中间件 转发给服务器,最终转发给客户端。可能会有多个中间件形成一堆符合WSGI标准的应用程序。

希望它可以帮助