为啥我的用于 Firebase 的 Cron 计划云功能在太平洋时间而不是 UTC 时间运行?

Posted

技术标签:

【中文标题】为啥我的用于 Firebase 的 Cron 计划云功能在太平洋时间而不是 UTC 时间运行?【英文标题】:Why is my Cron Scheduled Cloud Function for Firebase running on Pacific time rather than UTC?为什么我的用于 Firebase 的 Cron 计划云功能在太平洋时间而不是 UTC 时间运行? 【发布时间】:2019-10-06 19:32:15 【问题描述】:

我有一个计划的云功能(使用 Google's new solution),它打算在每周一上午 12:00 运行。

export const updateHighScores = functions.pubsub.schedule('0 0 * * 1').onRun((context) => 

    // (code)
    // console.log(‘This code will run every Monday at 12:00 AM UTC’);

);

我预计它会在世界标准时间上午 12:00 运行;然而,当午夜 UTC 到来时,什么也没有发生。所以我上床睡觉,为我预定的云功能没有工作感到难过,但决心继续努力。

但是第二天我检查了日志,它似乎确实有效,但它是在 太平洋时间 上午 12:00 运行的。

Cloud Function 的区域设置为 us-central1,但我认为这不会影响这一点。 我的计算机时区设置为太平洋时间,我位于中部时间,但我认为两者都不重要。 我还在 Firebase 和 Google Cloud Platform 中四处点击,看看是否有影响它的设置,但没有找到任何东西。

知道为什么它在太平洋时间午夜而不是 UTC 运行吗?

(我将通过更改所有这些变量并观察它如何影响计划的云功能来做一堆猜测和检查,但如果有人知道的话,不妨在这里问一下他们的头。谢谢!)

【问题讨论】:

【参考方案1】:

Scheduled functions 由Google Cloud Scheduler 计划触发。使用 Firebase CLI 进行部署时,会自动为您创建 Cloud Scheduler 中的条目。如果您点击Cloud console to show your schedules,您会看到时区设置为“美国/洛杉矶”,即太平洋标准时间。

时区是使用函数构建器 API 设置的。您可以在documentation 中阅读相关内容。

【讨论】:

知道了。再次感谢道格! 我在这里编辑了答案,以反映您可以使用函数的构建器 API 设置时区这一事实。它已记录在案。【参考方案2】:

我做这样的事情

exports.scheduledFunction = functions.pubsub
.schedule("0 4 * * *")
.timeZone("Asia/Baku")
.onRun((context) => 
    groupCustomers.set();
    tables.set();
    calledCustomers.set();
    groups.set(
        A:  name: "Altering", activeOnTablet: false ,
        
    );

    return null;
);

【讨论】:

为多个时区安排函数的最佳做法是什么? 可能功能不同。我认为这可能是一个很好的 *** 问题 :)

以上是关于为啥我的用于 Firebase 的 Cron 计划云功能在太平洋时间而不是 UTC 时间运行?的主要内容,如果未能解决你的问题,请参考以下文章

用于条带集成的 Firebase 计划付款

用于计划发布的 Firebase 和 GCP Cloud 任务

用于存储计划/cron 作业的数据库结构?

雪花任务多个计划

PHP:运行计划作业(cron 作业)

Linux任务计划周期性任务执行之cron/crontab