Cloud Functions for Firebase 按时触发?
Cloud Functions for Firebase trigger on time?
我正在寻找一种为 Firebase 安排 Cloud Functions 或换句话说在特定时间触发它们的方法。
更新 2019-04-18
现在有一种非常简单的方法可以通过 Firebase 在 Cloud Functions 上部署计划代码。
您可以使用简单的文本语法:
export scheduledFunctionPlainEnglish =
functions.pubsub.schedule('every 5 minutes').onRun((context) => {
console.log('This will be run every 5 minutes!');
})
或者更灵活的 cron table 格式:
export scheduledFunctionCrontab =
functions.pubsub.schedule('5 11 * * *').onRun((context) => {
console.log('This will be run every day at 11:05 AM UTC!');
});
要了解更多信息,请参阅:
请注意,您的项目需要在 Blaze 计划中才能运行,因此我在下面留下替代选项以供参考。
如果您想在 delay 上从另一个触发器的执行中安排对 Cloud Function 的单次调用,您可以使用 Cloud Tasks to set that up. Read this article 作为扩展示例它是如何工作的。
原回答如下...
还没有内置 runat/cron 类型的触发器。
目前最好的选择是使用外部服务定期触发HTTP功能。有关详细信息,请参阅 functions-samples repo 中的示例。或者使用最近推出的 Google Cloud Scheduler 通过 PubSub 或 HTTPS 触发 Cloud Functions:
我还强烈建议阅读 Firebase 博客上的这篇 post:How to Schedule (Cron) Jobs with Cloud Functions for Firebase and this video: Timing Cloud Functions for Firebase using an HTTP Trigger and Cron。
最后一个 link 使用 cron-job.org 触发 Cloud Functions,适用于免费计划的项目。请注意,这允许任何人在未经授权的情况下调用您的函数,因此您可能希望在代码本身中包含一些滥用保护机制。
您可以做的是启动一个由 cron 作业触发并发送到 PubSub 的 AppEngine 实例。我专门写了一篇博客post,你可能想看看:
https://mhaligowski.github.io/blog/2017/05/25/scheduled-cloud-function-execution.html
请务必首先注意,如果您愿意,根据 documentation. You may find a list of timezones here,函数执行的默认时区是 America/Los_Angeles在不同的时区触发您的功能。
注意!!:这是一个有用的网站,可以帮助 cron table formats(我发现它非常有用)
以下是您的操作方式:
(假设你想使用 Africa/Johannesburg 作为你的时区)
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!!");
});
我正在寻找一种为 Firebase 安排 Cloud Functions 或换句话说在特定时间触发它们的方法。
更新 2019-04-18
现在有一种非常简单的方法可以通过 Firebase 在 Cloud Functions 上部署计划代码。
您可以使用简单的文本语法:
export scheduledFunctionPlainEnglish =
functions.pubsub.schedule('every 5 minutes').onRun((context) => {
console.log('This will be run every 5 minutes!');
})
或者更灵活的 cron table 格式:
export scheduledFunctionCrontab =
functions.pubsub.schedule('5 11 * * *').onRun((context) => {
console.log('This will be run every day at 11:05 AM UTC!');
});
要了解更多信息,请参阅:
请注意,您的项目需要在 Blaze 计划中才能运行,因此我在下面留下替代选项以供参考。
如果您想在 delay 上从另一个触发器的执行中安排对 Cloud Function 的单次调用,您可以使用 Cloud Tasks to set that up. Read this article 作为扩展示例它是如何工作的。
原回答如下...
还没有内置 runat/cron 类型的触发器。
目前最好的选择是使用外部服务定期触发HTTP功能。有关详细信息,请参阅 functions-samples repo 中的示例。或者使用最近推出的 Google Cloud Scheduler 通过 PubSub 或 HTTPS 触发 Cloud Functions:
我还强烈建议阅读 Firebase 博客上的这篇 post:How to Schedule (Cron) Jobs with Cloud Functions for Firebase and this video: Timing Cloud Functions for Firebase using an HTTP Trigger and Cron。
最后一个 link 使用 cron-job.org 触发 Cloud Functions,适用于免费计划的项目。请注意,这允许任何人在未经授权的情况下调用您的函数,因此您可能希望在代码本身中包含一些滥用保护机制。
您可以做的是启动一个由 cron 作业触发并发送到 PubSub 的 AppEngine 实例。我专门写了一篇博客post,你可能想看看:
https://mhaligowski.github.io/blog/2017/05/25/scheduled-cloud-function-execution.html
请务必首先注意,如果您愿意,根据 documentation. You may find a list of timezones here,函数执行的默认时区是 America/Los_Angeles在不同的时区触发您的功能。
注意!!:这是一个有用的网站,可以帮助 cron table formats(我发现它非常有用)
以下是您的操作方式: (假设你想使用 Africa/Johannesburg 作为你的时区)
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!!");
});