烧瓶内置Web服务器有哪些限制

时间:2013-12-30 16:29:28

标签: webserver flask sysadmin embeddedwebserver

我是网络服务器管理的新手。我已多次阅读烧瓶内置Web服务器不是为“生产”而设计的,并且必须仅用于测试和调试......

但是如果我的应用只触及偶尔向服务器发送数据的一千个用户呢?

如果有效,何时需要打扰更复杂的Web服务器的配置? (我正在寻找近似指标)。

简而言之,我很想找到内置Web服务器可以做什么(具有大约阈值)以及它不能做什么。

非常感谢!

2 个答案:

答案 0 :(得分:47)

这个问题没有一个正确的答案,但这里有一些要记住的事情:

通过适量的水平扩展,您可以永远扩展调试服务器的使用范围。何时需要开始扩展(或切换到使用“真正的”Web服务器)还取决于您托管的环境,用户的期望等。

您可能遇到的主要问题是服务器是单线程的。这意味着它将按顺序一次处理一个请求。这意味着如果您尝试提供多个请求(包括favicon,静态项目,如图像,CSS和Javascript文件等),请求将需要更长时间。如果任何给定的请求发生需要很长时间(例如,20秒),那么整个应用程序在该时间(20秒)内没有响应。当然,这只是默认设置:您可以减少线程数(或者在其他进程中处理请求),这可能会缓解一些问题。但再一次,它在“高”负荷下仍然可能很慢。什么被认为是“高”负载将取决于您的应用程序和最大可接受响应时间的期望。

另一个问题是安全问题:如果你关心安全性(不仅仅是应用程序本身数据的安全性,还有运行它的盒子的安全性),那么你不应该使用开发服务器。它还没有准备好抵御任何形式的攻击。<​​/ p>

最后,开发服务器可能完全失败。它不是设计用于长时间运行的过程(几天,几周,几个月),因此它没有经过良好的测试才能以此身份运行。

所以,是的,它有局限性。是的,你仍然可以想象它在生产中使用它。是的,我仍然建议使用“真正的”Web服务器。如果您不喜欢需要安装像Apache或Nginx这样的东西的想法,你仍然可以使用一些解决方案仍然像使用WSGI Standalone servers中的一些{{3}}一样简单“运行python脚本”运行一个设计用于生产的服务器,其功能与在命令行中运行python run_app.py一样简单。您通常只需要创建一个4-5行python脚本来导入和创建服务器对象,将其指向Flask app并运行它。

gunicorn只能在命令行中运行,不需要额外的脚本:

gunicorn myproject:app

...其中“myproject”是包含app Flask对象的Python包。

答案 1 :(得分:0)

OP已经很久了,但是对于那些在未来遇到这个问题的人,我只想补充一点,即使在笔记本电脑上设置Apache服务器也是免费且非常容易的。只需通过取消注释或注释掉配置文件中的行,即可轻松配置所需的功能。

现在,可能有一种更简单的GUI方法可以实现这一目标,但只需编辑配置即可。