【问题标题】:Delayed or Random Tasks with Google Cloud Scheduler使用 Google Cloud Scheduler 的延迟或随机任务
【发布时间】:2020-08-18 12:50:38
【问题描述】:

我目前每周在树莓派上运行 2 个脚本,配置如下:

Cron 每周在固定时间执行一个 python 脚本。这个 python 脚本等待 0 到 50 个小时,然后运行 ​​python 脚本 A。它等待大约 16 个小时,然后每 8 小时再次运行脚本 A 3 次(该脚本第一次运行需要大约 4 倍的时间)。第 4 次运行 8 小时后,它运行脚本 B。

我想将我的脚本移至 Google Cloud VM 以提高可靠性,但为了在 100 小时内运行 30 小时的计算而全天候 24/7 运行 VM 效率低且成本高。

我知道我可以使用 Google Scheduler 作为我的 cron 来每周启动 VM,但我仍然冒着让它运行长达 50 小时等待脚本 A 运行的风险。我了解 cron 支持添加example here 中列出的随机睡眠间隔:

30 8-21/* * * * sleep ${RANDOM:0:2}m ; /path/to/script.php

但是,据我发现,Google Cloud Scheduler 被限制为 60 分钟,这是理所当然的。在这种情况下,我有什么选择? Google Cloud Task 是否支持延迟触发 VM(最长 50 小时)?这是 Pub Sub 会支持的东西吗?

我的脚本使用了一个我认为与 Google App Engine 不兼容的 python 库,因此我还需要弄清楚如何在触发时触发 VM 中的特定脚本。

【问题讨论】:

  • 只运行了 VM 成本的定价计算器:在我的 pi 上运行 24/7,在 Google VM f1-micro 和公共 ip 上运行每月需要 12.85 美元。使用 Google 调度程序以每周固定的时间运行 100 小时的周期为 4.55 美元/月。将 50 小时延迟随机化以运行我的自定义调度程序,剩余的 50 小时周期为 2.45/月。仅运行所需的 30 个处理小时的流程是每月 1.50 美元。

标签: python-3.x google-cloud-platform cron google-cloud-scheduler


【解决方案1】:

您可以使用 Cloud Scheduler 和 Pub/Sub 来触发一个云函数,该函数将启动您的 VM 并执行您的脚本。如果您不希望 Compute Engine 实例 24/7 全天候运行,则可以在脚本结束时让 Cloud Function 停止您的 VM。

您可以在此处了解如何使用 Cloud Scheduler 调度计算实例,以及如何使用 Cloud Functions 中的 HTTP 函数来启动和停止您的 Compute Engine 实例 [1]。

最重要的是,这里有关于如何使用 Cloud Scheduler 和 Pub/Sub 来触发 Cloud Function [2] 的文档。

[1]https://cloud.google.com/scheduler/docs/start-and-stop-compute-engine-instances-on-a-schedule

[2]https://cloud.google.com/scheduler/docs/tut-pub-sub

[3] 云函数:https://cloud.google.com/functions/docs/concepts/overview

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-23
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-21
    • 2011-05-19
    相关资源
    最近更新 更多