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

我特别迷失,因为here,第一个响应指出:



但是this帖子指出:



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

最佳答案

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

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

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

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

10-08 02:29