我正在寻找一种方法来为Firebase安排云功能,换句话说就是在特定时间触发它们。
答案 0 :(得分:80)
更新 2019-04-18
现在有一种非常简单的方法可以通过Firebase在云功能上部署预定代码。
您可以使用简单的文本语法:
WebElement element =driver.findElement(by);
JavascriptExecutor jse =(JavascriptExecutor)driver;
jse.executeScript("arguments[0].scrollIntoView(true);",element);
或更灵活的cron表格式:
export scheduledFunctionPlainEnglish =
functions.pubsub.schedule('every 5 minutes').onRun((context) => {
console.log('This will be run every 5 minutes!');
})
要了解有关此内容的更多信息,请参阅:
请注意,您的项目需要采用Blaze计划才能实现,因此我将在下面留下替代选项以供参考。
以下原始答案......
还没有内置的runat / cron类型触发器。
目前,最好的选择是使用外部服务定期触发HTTP功能。有关详细信息,请参阅functions-samples repo中的此示例。或者使用最近推出的Google Cloud Scheduler通过PubSub或HTTPS触发云功能:
我还强烈建议您在Firebase博客上阅读此帖子:How to Schedule (Cron) Jobs with Cloud Functions for Firebase和此视频:Timing Cloud Functions for Firebase using an HTTP Trigger and Cron。
答案 1 :(得分:10)
你可以做的是,启动一个由cron作业触发并发送到PubSub的AppEngine实例。我专门写了一篇博文,你可能想看看:
https://mhaligowski.github.io/blog/2017/05/25/scheduled-cloud-function-execution.html
答案 2 :(得分:0)
请务必首先注意,根据 documentation,您的函数将在其上执行的默认时区是 America/Los_Angeles。如果您想在不同的时区触发您的函数,您可以找到时区列表 here。
注意!!:这是一个有用的网站来帮助cron table formats(我发现它非常有用)
以下是您的处理方式: (假设您想使用非洲/约翰内斯堡作为您的时区)
export const executeFunction = functions.pubsub.schedule("10 23 * * *")
.timeZone('Africa/Johannesburg').onRun(() => {
console.log("successfully executed at 23:10 Johannesburg Time!!");
});
否则,如果您宁愿坚持默认值:
export const executeFunction = functions.pubsub.schedule("10 23 * * *")
.onRun(() => {
console.log("successfully executed at 23:10 Los Angeles Time!!");
});