python - 为什么 Flask 不应该与内置服务器一起部署?

标签 python flask

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

最佳答案

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

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

You can use the builtin server during development, but you should use a full deployment option for production applications. (Do not use the builtin development server in production.)

此外,Web 服务器以 root 身份运行(然后放弃特权),因此它们可以监听标准端口 80 和 443。您应该永远不要以 root 身份运行应用程序,这样您只会能够绑定(bind)到 1024 以上的端口,因此用户必须知道端口而不仅仅是域。

关于python - 为什么 Flask 不应该与内置服务器一起部署?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33086555/

相关文章:

python - 如何从某个索引循环遍历列表?

Python 通过跳过列表之间的值将值附加到空列表

python - flask 棉花糖 : how to mark all fields as optional only when the method is PUT

python - 是否有更短/更好的方法来验证请求参数?

python - 如何在Flask函数中读取隐藏的表单数据

python - 使用 Bulbs/python 和 Neo4j 2.0 的错误消息

python - 有没有办法用注释跨多行编写 pandas SQL 查询?

python - flask + Jinja2 : how to measure performances

python - literal_eval(f'{}') 会被滥用来执行来自外部源的代码吗?

python - 在 Flask 中访问传入的 POST 数据