【问题标题】:Cloud Scheduler (Cron Job) triggered a Google Cloud Function on a wrong timeCloud Scheduler (Cron Job) 在错误的时间触发了 Google Cloud Function
【发布时间】:2021-06-14 06:02:53
【问题描述】:

目前我在 Google Functions 中部署了一个函数,它是由 Cron Job 使用 Google Cloud Platform 中的 Cloud Scheduler 触发的。

Unix 中的 Cron 作业频率如下:0 9 1-7,15-21,29-31 * 1

这意味着它应该在每月的每个星期一上午 9:00 触发,这天分别在 1 日和 7 日、15 日和 21 日、29 日和 31 日之间。或者换句话说,它每 2 周触发一次。

下图(cron 作业测试人员)也证实了我打算做什么。

果然昨天3月15日(周一)触发了,今天3月16日(周二)也触发了

我想知道你们中的任何人是否发生过这种情况,以及这是否是我的 cron 作业的问题,或者 Google Cloud Scheduler 没有以这种方式解释它。

非常感谢任何帮助/经验!

【问题讨论】:

    标签: google-app-engine google-cloud-platform cron google-cloud-functions google-cloud-scheduler


    【解决方案1】:

    当同时提供月份和星期几时,Crontab 使用 OR:请看您的屏幕截图,它显示您的进程将在明天 3 月 17 日 9:00 运行。

    老实说,我不知道这个 crontab 异常的真正原因:出于好奇,我遇到了this SO question,它提供了一个可能的解释。

    为了表达类似的条件,在一般用例中,您可以利用crontab表达式,例如this SO questionthis other in Server Fault,但我不知道它们是否适用于Google Cloud Scheduler .

    也许,您可以使用所谓的 English Style Schedule,而不是 cron 表达式,与 App Engine 上使用的相同 - 请参阅标签 Custom interval,来定义您的表达式,也许它可能更适合您的用例。

    【讨论】:

    • 您好 jccampero,感谢您的回复。我已经阅读了您的建议,不幸的是 GCP 不允许在其云功能应用程序的 cron 作业中使用这些 js 文件。另一方面,关于安排函数的 yaml 文件仅适用于 App Engine,不适用于 Cloud Functions(类似于 AWS lambda)。如果您对我应该如何修改我的 cron 工作以实现我所需要的有任何建议,我们将不胜感激!!!
    • 嗨@JhonyChu。非常感谢您的反馈。是的,当然,你没有能力使用 yams 文件或类似的东西,但我的意思是你可以使用可以在 App Engine 中使用的相同类型的表达式。例如,在定义 Cloud Scheduler cron 表达式时,您可以使用类似:2nd wednesday of march 17:00 而不是传统的 crontab 之类的表达式,这就是我想说的。对不起,如果我没有在答案中很好地解释自己。请尝试一下
    • @jccampnrero,感谢您的回复。它没有用 :( 只允许使用 unix cron 作业。
    • 我很遗憾听到@JhonyChu。我很确定。请参阅云命令行的相关documentation,当他们在REQUIRED FLAGS 下描述schedule 定义时。它们清楚地表明这两种表达方式都受支持。您是否尝试从 Web 控制台或 gcloud CLI 定义表达式?也许 Web 控制台只允许您定义 unix cron 表达式,而第二种表达式只能与 gcloud CLI 一起使用。
    • 感谢分享!我会试一试 :) 让你知道!
    猜你喜欢
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    • 2019-04-12
    • 1970-01-01
    • 2020-10-26
    • 2022-08-16
    • 2019-05-26
    相关资源
    最近更新 更多