为什么我的Firebase Cron计划的Cloud功能在太平洋时间而不是UTC运行?

时间:2019-05-20 12:11:14

标签: firebase cron google-cloud-functions google-cloud-scheduler

我有一个计划的云功能(使用Google's new solution),该功能打算在每个星期一的12:00 am运行。

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’);

});

Functions Dashboard

我希望它在世界标准时间上午12:00运行;但是,当UTC午夜滚动时,什么也没发生。所以我上床睡觉,对我预定的云功能无法正常工作感到沮丧,但决定继续努力。

但是第二天,我检查了日志,看来它确实起作用了,但它在太平洋时间太平洋的12:00 am运行。

Functions Log

  • Cloud Function的区域设置为us-central1,但我认为这不会对此产生影响。
  • 我的计算机的时区设置为太平洋时间,并且我位于中央时间,但是我认为这都不重要。
  • 我还单击了Firebase和Google Cloud Platform,以查看是否有可能会影响到它的设置,但没有找到任何东西。

有什么想法为什么要在太平洋时间午夜而不是世界标准时间运行?

(我将通过更改所有这些变量并观察其如何影响计划的云功能来进行一番猜测和检查,但是如果有人知道,我想也可以在这里问一下谢谢!)

2 个答案:

答案 0 :(得分:2)

Scheduled functionsGoogle Cloud Scheduler安排的时间触发。使用Firebase CLI进行部署时,会自动为您创建Cloud Scheduler中的条目。如果您点击进入Cloud console to show your schedules,则会看到时区设置为“美国/洛杉矶”,即PST。

使用功能构建器API设置时区。您可以在documentation中阅读有关内容。

答案 1 :(得分:1)

我做这样的事情

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;
});