【问题标题】:Flask on Python 3.7 more demanding (and expensive) than webapp2 on Python 2.7 with Google App Engine Standard environmentPython 3.7 上的 Flask 比具有 Google App Engine 标准环境的 Python 2.7 上的 webapp2 要求更高(也更昂贵)
【发布时间】:2020-08-29 15:07:54
【问题描述】:

我最近将 [python 2.7 / webapp2] 中内置的一个非常简单的项目移植到 [python 3.7 / Flask] 中,在上个月我看到 成本从 0 美元提高到 20 美元!

该项目非常简单(90 行代码):只是几个请求处理程序,它们根据查询字符串中传递的值返回不同的 json。除了语法略有不同外,代码几乎没有区别。流量和请求也没有太大变化,如果有什么变化的话。

在计费中,我可以看到前端工作时间如何显着增加,以及 GAE 如何比以前更频繁地启动更多实例。

有没有人经历过同样的行为? python 3.7 和 Flask 在 2.7 上是否比 webapp2“重”?

为了完整起见,两个版本都部署了标准原版gcloud app deploy,没有其他选项。它在 F1 实例上使用标准环境,没有后台工作人员或任务。 app.yaml 在与实例设置相关的部分几乎相同:

env: standard
instance_class: F1
automatic_scaling:
  min_idle_instances: automatic
  max_idle_instances: automatic
  min_pending_latency: automatic
  max_pending_latency: automatic

没有流量的版本,没有任何实例正在运行(它们无法停止,因此它们正在服务,但有 0 个实例)。

为了清楚起见,我可以附上新版本的图表,以及我暂时重新启用的旧版本。从图中可以清楚地看出,新设置如何无缘无故地启动实例,而旧设置如何保持一个很酷的平面 1 实例处于活动状态。

【问题讨论】:

  • 经过进一步调查,我可以确认,与带有 webapp2 的 Python 2.7 相比,带有 Flask 的 Python 3.7 运行时的占用空间肯定更大。同一脚本的执行延迟在第 50/90/95 个百分位从平均 5ms/50ms/90ms 跃升至 15ms/90ms/120ms。这平均是 2 倍的增长,这很可能会触发 Google App Engine 调度程序启动额外的实例。

标签: python google-app-engine flask


【解决方案1】:

您可能熟悉,App Engine 定价主要基于实例运行的小时数。 https://cloud.google.com/appengine/pricing

Flask 或 python37 运行时并没有什么特别之处,会导致它比 python27 webapp2 应用程序运行“更重”。但是,使用模式可能会导致这样的计费行为。例如:

  • 如果旧版本(在您的情况下是 python27 应用程序)被禁用并且扩展类型允许实例继续在旧版本上运行,您将支付两个版本的计算时间。
  • 使用传入的 HTTP 请求触发后台工作(例如数据处理、媒体压缩等)并在工作完成之前返回会导致计算时间长,从而导致费用高昂。

这里探讨了其他可能性:https://stackoverflow.com/a/47245172/11957811。为了确定在您的特定情况下导致确切费用的原因,我们需要知道您如何部署新旧应用程序(例如您运行了哪些 gcloud 命令和标志)以及两者的 app.yaml 配置是什么.

【讨论】:

  • 谢谢约书亚!我更新了我的原始问题以提供有关设置的更多详细信息。我还检查了您提到的其他讨论,但它指的是 Flex 环境,其行为与我使用的标准环境不同。您如何看待上面的图表?
猜你喜欢
  • 1970-01-01
  • 2018-03-12
  • 2019-02-08
  • 2011-10-10
  • 2018-07-01
  • 2013-11-08
  • 2020-08-27
  • 2013-10-28
  • 2019-11-25
相关资源
最近更新 更多