当前位置: 首页 > 面试题库 >

Flask内置Web服务器的局限性是什么

齐坚成
2023-03-14
问题内容

我是Web服务器管理的新手。我已经多次阅读flask内置Web服务器不是为“生产”而设计的,而只能用于测试和调试…

但是,如果我的应用程序仅接触到偶尔将数据发送到服务器的一千个用户,该怎么办?

如果可以,我什么时候需要打扰更复杂的Web服务器的配置?(我正在寻找近似指标)。

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

非常感谢 !


问题答案:

这个问题没有一个正确的答案,但是请记住以下几点:

通过适当的水平扩展,你很有可能可以永远扩展使用调试服务器。究竟何时需要开始扩展(或切换为使用“真实的” Web服务器),这还取决于你所托管的环境,用户的期望等。

你可能会遇到的主要问题是服务器是单线程的。这意味着它将一次连续地处理每个请求。这意味着,如果你尝试服务多个请求(包括网站图标,图像,CSS和Javascript文件等静态项),则请求将花费更长的时间。如果任何给定的请求恰好花费很长时间(例如20秒),则整个应用程序将在该时间(20秒)内无响应。当然,这只是默认设置:你可以增加线程数(或在其他进程中处理请求),这可以缓解某些问题。但是再一次,它在“高”负载下仍然会变慢。所谓的“高”负载将取决于你的应用程序以及对最大可接受响应时间的期望。

另一个问题是安全性:如果你完全关心安全性(不仅是应用程序本身中数据的安全性,还包括将要运行它的盒子的安全性),那么你不应该使用开发服务器。它尚未准备好承受任何形式的攻击。

最后,开发服务器可能会完全失败。它并非设计用于长时间运行(几天,几周,几个月),因此尚未经过充分测试以达到此目的。

因此,是的,它有局限性。是的,你仍然可以想象在生产中使用它。是的,我仍然建议使用“真实” Web服务器。如果你不喜欢需要安装Apache或Nginx之类的想法,则仍然可以使用一些WSGI Standalone服务器,该解决方案仍然像“运行python脚本”一样简单。设计用于生产中的服务器,就像python run_app.py在命令行中运行一样简单。通常,你只需要创建4-5行的python脚本即可导入和创建服务器对象,将其指向Flask app并运行它。

gunicorn可以仅在命令行上运行以下命令,而无需额外的脚本:

gunicorn myproject:app

…其中“ myproject”是包含appFlask对象的Python包。请记住,其中一个“ gunicorn”开发商可能会建议你反对这种方法。



 类似资料:
  • PHP 5.4 之后, 你可以不用安装和配置功能齐全的 Web 服务器,就可以开始学习 PHP。 要启动内置的 Web 服务器,需要从你的命令行终端进入项目的 Web 根目录,执行下面的命令: > php -S localhost:8000

  • 本文向大家介绍MySQL ENUM的局限性是什么?,包括了MySQL ENUM的局限性是什么?的使用技巧和注意事项,需要的朋友参考一下 以下是MySQL ENUM的限制- 枚举值不能是表达式 我们甚至不能将表达式用作枚举成员,即使将其计算为字符串值也是如此。 示例 例如,我们甚至可以使用CONCAT函数来导致字符串的求值。 以下查询将不起作用- 无法将用户变量用作枚举成员 另一个限制是我们不能将用

  • 本文向大家介绍财务比率的重要性和局限性是什么?,包括了财务比率的重要性和局限性是什么?的使用技巧和注意事项,需要的朋友参考一下 财务比率的重要性如下- 通过分析和检查以前的结果,比率分析可以在不同项目之间进行关联。 比率分析可用于准备预算,制定政策以及计划未来。 比率分析表明公司是否正在改善。 比率分析充当效率的评估者。 可以进行公司间比较。 讲述短期流动性头寸。 长期偿付能力可以衡量。 借助比率

  • 在python内置的web服务器中,当使用函数时,它会在终端中打印结果... 例如: 如何在PHP内置Web服务器中打印这样的东西? 例如,我希望在终端中打印$\u POST。我使用用于运行PHP内置web服务器。

  • 问题内容: 为什么建议使用Apache或Nginx部署Flask应用程序?它具有内置服务器,难道不能仅通过运行并打开防火墙中的正确端口来进行部署吗? 问题答案: Werkzeug的WSGI服务器不适用于生产。它是在开发过程中提供的便利。它在开发时并未考虑安全性或性能(默认情况下,一次仅处理一个请求)。使用真实的WSGI应用程序服务器(例如uWSGI或Gunicorn)来提高性能,并通过真实的Web

  • 本文档说明了由服务器核心(core)提供的以实现基本服务器运转的一些指令。 服务器标识 相关模块 相关指令 ServerName ServerAdmin ServerSignature ServerTokens UseCanonicalName UseCanonicalPhysicalPort ServerAdmin和ServerTokens指令控制有关服务器的哪些信息将出现在服务器生成的文档中(