为什么不能在生产中使用werkzeug?

时间:2018-05-03 10:20:55

标签: python web-services nginx flask werkzeug

werkzeug文档声明它只能用于开发而不是生产。如果你想配备一个生产环境,建议使用nginx,apache + uwsgi等。

  1. 那么如果生产环境使用werkzeug会发生什么?
  2. 由于表现不佳,不推荐在生产中使用?
  3. 如果性能不佳,但我看到werkzeug原本也支持多线程多进程,为什么它性能不佳?
  4. werkzeug和NGINX在性能上有何不同?为什么?

1 个答案:

答案 0 :(得分:2)

TL; DR:编写一个健壮,快速且可扩展的HTTP服务器远非微不足道,并且需要的不仅仅是支持多线程多进程"。

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

  

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

这并不妨碍您在werkzeug上构建应用程序(希望如此),您只是想使用生产就绪的HTTP服务器进行部署。

至于原因,上面已明确说明:此开发服务器尚未设计为在负载下正确执行,而是一个实用的开发工具。正确处理负载是一个非常复杂的问题,这就是为什么有像nginx,apache等专用HTTP服务器的原因 - 几乎所有的服务器都用C编码 - 注重稳定性和性能。因此,如果您尝试在生产中使用werkzeug的开发服务器会发生什么情况,它会在负载下变得非常缓慢,直到您的网站完全无法使用。您可能还有内存使用问题(可能会扼杀您的服务器)以及安全问题 - 另外两个难以正确处理的问题,最好留给专用,调试和优化的HTTP服务器。