我有一个预定的云功能(使用 Google 的新解决方案),该功能预计每周一上午 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’);
});
我预计它会在 UTC 时间凌晨 12:00 运行;然而,当世界标准时间午夜到来时,什么也没有发生。于是我上床睡觉,为我预定的云功能不起作用而感到难过,但决定继续努力。
但第二天我检查了日志,看起来它确实有效,但它运行在太平洋时间上午 12:00。
知道为什么它在太平洋时间午夜而不是 UTC 时间运行吗?
(我将通过更改所有这些变量并观察它如何影响预定的云功能来进行一系列猜测和检查,但我认为不妨在这里询问,以防有人立即知道。谢谢!)
计划函数由Google Cloud Scheduler按计划触发。使用 Firebase CLI 进行部署时,会自动为您创建 Cloud Scheduler 中的条目。如果您点击云控制台来显示您的日程安排,您会看到时区设置为“America/Los_Angeles”,即太平洋标准时间。
时区是使用函数构建器 API 设置的。您可以在文档中阅读相关内容。
我做这样的事情
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 函数(例如 onSchedule)设置计划函数时区的人,您可以使用 ScheduleOptions 参数。例如,
exports.updateHighScores = onSchedule(
{
schedule: "0 0 * * 1",
timeZone: "America/Los_Angeles"
},
(context) => {
// Code to execute on schedule
}
);