【问题标题】:why can't use werkzeug in production? [duplicate]为什么不能在生产中使用werkzeug? [复制]
【发布时间】:2018-10-13 15:01:17
【问题描述】:

werkzeug 文档声明它只能用于开发而不是生产。如果要配生产环境推荐使用nginx、apache+uwsgi等。

  1. 那么如果生产环境使用 werkzeug 会发生什么?
  2. 不推荐在生产环境中使用,因为它性能不佳?
  3. 如果性能很差,但是我看到werkzeug原来也支持多线程多进程,为什么性能很差?
  4. werkzeug和NGINX在性能上有什么区别,为什么?

【问题讨论】:

  • 1.您可以在生产中使用它,但性能会很差。 2. 这就是文档所说的:“它是专为开发目的而设计的,在高负载下性能很差。” 3(顺便说一下4)。如果软件不是为了做某事而设计的,那么问它为什么不这样做会引起流氓的回答因为它不是为了做某事而设计的。这有点像问为什么SUV不能爬树。如果你想问开发人员他们为什么做出这些设计决定,那么也许 SO 不是最好的提问地点。

标签: python web-services nginx flask werkzeug


【解决方案1】:

TL;DR:编写一个健壮、快速和可扩展的 HTTP 服务器绝非易事,而且需要的不仅仅是“支持(ing)多线程多进程”。

the documentation states 是您不应该在生产中使用开发服务器

开发服务器不适用于生产系统。它专为开发目的而设计,在高负载下表现不佳。

这不会阻止您在 werkzeug 上构建您的应用程序(希望如此),您只是想使用可用于生产的 HTTP 服务器进行部署。

至于原因,上面已经很清楚地说明了:这个开发服务器并不是为了在负载下正常运行而设计的,而是作为一个实用的开发工具。正确处理负载是一个相当复杂的问题,这就是为什么会有专门的 HTTP 服务器,如 nginx、apache 等——几乎所有这些服务器都是用 C 编码的——同时注意稳定性和性能。因此,如果您尝试在生产环境中使用 werkzeug 的开发服务器,会发生什么情况:它在负载下会变得非常缓慢,以至于您的网站将完全无法使用。您可能还会遇到内存使用问题(这可能会直接杀死您的服务器)以及安全问题 - 其他两点很难解决,最好留给专用的、经过调试和优化的 HTTP 服务器。

【讨论】:

    猜你喜欢
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    • 2020-03-05
    • 2017-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多