WSGI库(不是框架,不是服务器)打算用于什么?

时间:2018-12-24 20:50:49

标签: flask wsgi werkzeug

我正在努力很好地理解Web开发中关注点分离的问题,尤其是在WSGI中。

这个疑问让我读到有关Flask的文章,然后阅读有关Werkzeug的文章,所以我将以它们为例来集中讨论我的问题。

首先是Werkzeug web page中的示例代码:

from werkzeug.wrappers import Request, Response

@Request.application
def application(request):
    return Response('Hello World!')

if __name__ == '__main__':
    from werkzeug.serving import run_simple
    run_simple('localhost', 4000, application)

有一个return Response()。它看起来像一个Web应用程序。但是Werkzeug并不是作为Web框架呈现的,而是作为“ WSGI实用程序库”呈现的。它在WSGI in Read the Docs中显示为中间件。

然后我在PEP 3333 -- Python Web Server Gateway Interface v1.0.1中找到了它:

  

请注意,相对于某些应用程序,单个对象可以扮演服务器的角色,而对于某些服务器而言,它也可以充当应用程序。此类“中间件”组件可以执行以下功能:

     
      
  • 在相应地重写环境之后,基于目标URL将请求路由到不同的应用程序对象。
  •   
  • 允许多个应用程序或框架在同一过程中并行运行
  •   
  • 通过网络转发请求和响应,实现负载平衡和远程处理
  •   
  • 执行内容后处理,例如应用XSL样式表
  •   

所以,这是我的问题:
1.中间件(例如插件)是否可以向服务器或应用程序添加功能?我想是的,但可以肯定。
2.是否可以仅使用Werkzeug之类的工具来部署整个(简单的)Web应用程序?
2a。如果是:与这些工具相比,专用Web框架具有哪些优势?我知道Flask是建立在Werkzeug之上的,那么Flask会增加什么呢?
2b。如果否:代码示例中的return Response()语句是什么?我是否误解了Web框架/应用程序的概念?

谢谢。

0 个答案:

没有答案