python - 为什么我需要为一个简单的 Flask 应用程序使用 Web 服务器、中间件等?

标签 python nginx flask cherrypy gunicorn

<分区>

我一直在开发一个简单的 MVP 应用程序,是时候将它部署到我的生产服务器以进行更彻底的外部测试了。它永远不会承受沉重的流量负载,这只是我需要一小部分用户进行测试的东西。

现在我总是使用三层。 Nginx/Apache > Guncicorn/CherryPy/等 > Flask/Django/Pyramid/Bottle/等

我知道这是常识。但我从来没有真正花时间问为什么。我为什么要设置所有这些?

最佳答案

Django docs关于包含的开发服务器有这样的话:

We’ve included this with Django so you can develop things rapidly, without having to deal with configuring a production server – such as Apache – until you’re ready for production.

Now’s a good time to note: don’t use this server in anything resembling a production environment. It’s intended only for use while developing. (We’re in the business of making Web frameworks, not Web servers.)

Apache/Nginx 相对于开发服务器的两个优势立即浮现在脑海中:

  • Django 开发服务器在设计时并未考虑安全性。 Apache/Nginx 旨在通过网络公开,已经(并将继续)努力寻找/修复 Django 开发服务器没有的漏洞。
  • 您提供的许多请求都是静态文件(图片、JS、CSS)。 Nginx 和 Apache 在服务这些 Assets 方面将比用 Python 编写的服务器更高效。

关于python - 为什么我需要为一个简单的 Flask 应用程序使用 Web 服务器、中间件等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32042323/

相关文章:

python - Django 嵌套查询性能

python - 检查变量是否为 None 的语义方法

ssl - 将额外的子域附加到当前由 Certbot 创建的 Let's Encrypt SSL 证书

python - 从 Flask 请求启动新的子流程

python - 列表继承 : "extend" vs "+" vs "+="

python - 在 Cygwin 中从源代码构建 Vim

nginx - 从 Jenkins 运行时,将通配符与 symlink 命令一起使用会创建错误的链接

macos - OSX - 启动和停止 Nginx 错误

python - 不同包中的 SQLAlchemy InvalidRequestError

flask - 动态生成flask-wtf形式