【问题标题】:Always Running Python Script on Google Cloud始终在 Google Cloud 上运行 Python 脚本
【发布时间】:2019-05-28 04:28:35
【问题描述】:

我想在 Google Cloud 上托管 一个 python 脚本,它会无限期地运行

可以使用哪些 Google Cloud 产品可靠且经济地实现这一目标?

这可以在 AppEngine 上实现吗?

【问题讨论】:

  • 你能澄清一下python脚本在逻辑上会做什么吗?例如,一个 Python 应用程序正在监听传入的浏览器请求并为它们提供服务......在逻辑上可以被认为是“无限期运行”,但会导致与“计算无限位数的 PI”截然不同的答案。就目前而言,这个问题太宽泛了,需要在回答之前缩小范围。
  • @Kolban 它监听来自物联网设备的数据。
  • 谢谢...但是它如何监听数据?它是传入的 REST 请求吗?它是 MQTT 发布吗?它是 GCP Pub/Sub 发布吗?请花时间尽可能全面和深入地回应。
  • 它是一个 MQTT 客户端,不断监听来自设备的消息。

标签: python google-app-engine google-cloud-platform


【解决方案1】:

在 GCP 中,有多种方法可以运行处理逻辑。我们有 App Engine、Functions、Compute Engine、GKE、Cloud Run 等等。其中,Compute Engine 和 GKE 提供最低级别的控制,这意味着您可以编排代码以 100% 的时间运行……并且基本上可以做任何您想做的事情。根据您的故事,听起来 Compute Engine 就是您想要的。创建 Compute Engine 时,基本上会给您一个虚拟机(通常是 Linux),您只需在该环境中运行您想要的任何逻辑/应用程序。 Google 会在 Compute Engine 运行期间向您收费。如果您有一个始终在运行的显式 Python 应用程序,那么无论流量是否实际到达,您都需要 24x7 全天候收费。

您可能要考虑的其他功能是 Cloud Functions。云函数是在有要处理的活动请求时运行的逻辑。 GCP 有责任在不向您收取该服务费用的情况下被动侦听新请求。当请求到达时,您的逻辑将被执行,并且您只需为您的逻辑实际执行的持续时间付费。 Cloud Run 与 Cloud Functions 类似,但逻辑托管在 Kubernetes 环境中,而不是原生环境。

对于 Cloud Function,传入请求可以通过 REST 请求或 GCP Pub/Sub 到达。在您的描述中,这些都不适用,因为您通过 MQTT 接收数据。这就是 Google IOT Core 发挥作用的地方。 Google IoT core 是用于管理 IoT 设备的全套环境。这个故事的主要内容是被动侦听传入 MQTT 请求的能力。当授权的 IoT 设备发送 MQTT 请求时,Google IoT 核心会自动通过 GCP Pub/Sub 转发 MQTT 请求的内容。然后,这将到达 IoT 消息的机制与其最终处理方式分离。由于 MQTT 消息现已发布到 GCP Pub/Sub,因此可以将其用作 Google Cloud Function 的触发器。

按照所有这些部分......检查可能导致最便宜且更具动态可扩展性的解决方案的一种可能性是:

IoT Device --- MQTT ---> IoT Core --- Pub/Sub ---> Cloud Function

这个故事基本上改变了范式,从“我如何以不确定的方式主动监听我的代码中的请求”到“我如何在请求到达时执行我的代码”。

【讨论】:

  • 很棒的解释。谢谢你的时间。 :)
【解决方案2】:

在 appengine 上可以,尝试在 app.yaml 中切换到实例类型后端
您可以了解更多关于后端/前端实例here

【讨论】:

    猜你喜欢
    • 2018-05-07
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多