我正在研究云计算功能,特别是调度功能。我需要每5分钟定期触发一个功能,但只有测试步骤。我需要运行它的pubsub模拟器没有部署它。
怎么做呢?
我试过用 Firebase 弹,但只触发了一次
exports.scheduledFunctionPlainEnglish =functions.pubsub.schedule('every 2 minutes')
.onRun((context) => {
functions.logger.log("this runs every 2 minutes")
return null;
})
4条答案
按热度按时间3npbholx1#
计划的函数被加载到Cloud Functions模拟器运行时,并绑定到PubSub模拟器主题。
但正如@samstern所说(https://github.com/firebase/firebase-tools/issues/2034):
你就得用发布订阅消息手动触发它们。
你可以这样做:
关于这个概念的其他信息(感谢@kthaas):
eufgjt7s2#
正如你所说,你可以使用firebase shell运行你的函数一次,并且在firebase shell中,你可以使用NodeJS命令。
使用设置间隔
在
firebase functions:shell
中,使用setInterval
每2分钟运行一次函数。单行脚本
从firebase-tools版本8.4.3开始,尤其是this PR,管道解决方案不再起作用。
在Bash中,您甚至可以通过管道将
setInterval
命令传输到firebase shellwz1wpwve3#
对于那些在2023年看到这个的人来说,它仍然不受支持。
我的解决方案是将
functions.pubsub.schedule
中执行"工作"的代码抽象到它们自己的函数中,然后创建一个单独的文件(我将其添加到了functions文件夹的顶部),其中包含setInterval
,该文件将触发前面提到的抽象函数。例如,在代码中的某个地方:
在
/functions
目录顶部的timers.js
(例如)文件中:然后,你可以启动你的Firebase Emulator套件。在另一个终端会话中,只运行一个普通的
$ node functions/timers.js
。现在你预定的函数代码正在运行,你的整个模拟器套件也在运行。希望这对某人有帮助!
zte4gxcn4#
当前不支持调度函数。documentation声明:
使用shell,您可以模拟数据并执行函数调用,以模拟与Emulator Suite当前不支持的产品的交互:存储、PubSub、分析、远程配置、存储、身份验证和崩溃分析。
计划函数是pubsub触发器的不受支持的扩展。
请随意file a feature request with Firebase support。