为什么在Nginx上运行Flask需要WSGI包装器?

发布于 2021-01-29 17:27:18

因此,从Python / Flask文档中,他们两个都建议不要将Flask
Web服务器作为有意义的生产Web服务器运行。我的问题是,然后可以在Nginx服务器上运行Flask应用程序吗?为什么Internet上的所有指南都建议将Flask包裹在uWSGI,Tornado或其他WSGI服务器周围?成为WSGI意味着什么?Flask
WGSI不兼容吗?

我特别失落,因为在这里,第一个回应指出:

Apache和Nginx都是HTTP服务器,它们可以提供静态文件(如.jpg和.html文件)或动态页面(如以PHP或Python等语言编写的Wordpress博客或论坛)。

然而,这篇文章指出:

Nginx是一个Web服务器。它提供静态文件,但是无法执行和托管Python应用程序。uWSGI填补了这一空白。

由服务器(例如:uWSGI)然后由另一个服务器(例如:Nginx)处理我的应用程序似乎效率低下。

关注者
0
被浏览
52
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    Nginx是一个Web服务器,它与Web服务器有关,而不与如何运行Python程序有关。uWSGI是一个应用程序服务器,并且知道如何使用Python(和现在的其他语言)说WSGI。Nginx和uWSGI都使用uWSGI协议,该协议是UNIX套接字上的一种有效协议。

    Nginx处理来自/响应外界的http请求(可能是负载平衡,缓存等)。您的Flask应用程序处理WSGI请求/响应。uWSGI知道如何启动您的应用程序(可能使用多处理和/或线程化)以及如何弥合HTTP和WSGI之间的鸿沟。

    Nginx之外还有其他HTTP服务器,而uWSGI之外还有其他WSGI服务器,但是它们都使用相同的工作流程:HTTP服务器传递给WSGI服务器,该WSGI服务器管理您的应用程序过程,然后传递回HTTP服务器。

    此设置称为反向代理。它使每个工具都能做自己擅长的事情,而不必担心过程的其他部分。在达到真正的
    大规模 之前,没有什么特别低效的方法。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看