云函数定时器

2024-05-10

我需要创建一个云函数来启动一个计时器,该计时器在 X 分钟后调用另一个云函数。它应该重复此 N 次,除非在达到 N 之前被告知停止。这可能吗?我一直在读到您只能使用外部 cron 作业或应用程序引擎来设置计时器?有可能以这种方式做我想做的事吗?是否有与之相关的成本?


Cloud Functions 中没有为此内置功能。您必须在 Cloud Functions 之上构建一些东西。

  1. 从一个开始cron job https://stackoverflow.com/questions/42790735/cloud-functions-for-firebase-trigger-on-time比如说每分钟运行一次。
  2. 现在在数据库中构建一个回调队列,例如Firebase 实时数据库。队列中的每一项(至少)包含需要调用的Cloud Function的URL,以及需要调用的时间戳。
  3. 每次您想要安排回调时,请将任务写入队列中。例如。

    queueRef.push({ timestamp: Date.now() + 5*60*1000, url: "https://mycloudfunctionsurlwithoptionalparameters" });
    
  4. cron 作业触发的函数会检查队列中之前要触发的项目:

    queueRef.orderByChild("timestamp").endAt(Date.now()).once("value").then(function(snapshot) {
      snapshot.forEach(function(child) {
        var url = child.val().url;
        fetch(url).then(function() {
          queueRef.child(child.key).remove();
        });
      });
    });
    

    所以这个函数调用 URL(使用fetch) 已指定,如果调用成功,则会从队列中删除该条目。


您可能还想看看谷歌云任务 https://cloud.google.com/tasks/,它允许以编程方式调度调用 Cloud Functions 的任务。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

云函数定时器 的相关文章

随机推荐