为什么不应该使用内置服务器部署Flask?

时间:2015-10-12 17:04:34

标签: python flask

为什么建议使用Apache或Nginx部署Flask应用程序?它有一个内置的服务器,不能只通过运行python app.py并在防火墙中打开正确的端口来部署它吗?

2 个答案:

答案 0 :(得分:13)

Werkzeug的WSGI服务器不适合用于生产。它是在开发过程中提供的便利。它没有考虑安全性或性能而开发(默认情况下,它一次只处理一个请求)。使用真实的WSGI应用程序服务器(如uWSGI或Gunicorn)来提高性能,并通过真实的Web服务器(如Nginx)代理它以提高性能和安全性。 Web服务器擅长排队请求/响应,可以同时提供静态和其他内容,并且旨在处理SSL。 WSGI服务器善于有效地协调应用程序中的多个请求。 Werkzeug被设计为WSGI库,而不是Web服务器或WSGI服务器。

docs直接告诉您不要在生产中使用开发服务器。

  

您可以在开发期间使用内置服务器,但应该为生产应用程序使用完整部署选项。 (不要在生产中使用内置开发服务器。)

此外,Web服务器以root身份运行(然后删除权限),因此他们可以侦听标准端口80和443.您应该从不以root身份运行应用程序,因此您只能能够绑定到1024以上的端口,因此用户必须知道端口而不仅仅是域。

答案 1 :(得分:-5)

“你永远不应该以root身份运行应用程序”

这没有任何意义。 默认情况下,nginx也以root身份运行。如果你以root身份运行flask,至少你可以服务端口80,否则很难实现。