0

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

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

我想将我的脚本移动到 Google Cloud VM 以提高可靠性,但运行 VM 24/7 只是为了在 100 小时内运行 30 小时的计算是低效且昂贵的。

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

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 中的特定脚本。

4

1 回答 1

0

您可以使用 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

于 2020-05-26T20:03:03.080 回答