【问题标题】:Manually trigger scheduled or trigger function手动触发预定或触发功能
【发布时间】:2021-04-03 10:03:45
【问题描述】:

有没有办法手动触发预定功能和/或 Firestore 触发功能?我有两种情况需要解决:

  1. 正在侦听 Firestore 文档 (onCreate) 的云函数未触发 - 在大约 1,000 次调用中有 3 次失败,因此我需要为这 3 个文档手动触发它。这可能(手动触发此功能)吗?
  2. 我有一个每小时运行的计划函数,但是当代码需要一个数组时,在 Firestore 文档中抛出了一个错误 b/c 的地图。有什么方法可以手动运行计划功能一次,而不是等待一个小时再运行?

【问题讨论】:

    标签: firebase google-cloud-functions


    【解决方案1】:

    -- Firebase 控制台
    -- 功能
    -- cron 作业右侧的“...”
    --“在云调度程序中查看”
    -- 函数右侧的“立即运行”

    【讨论】:

      【解决方案2】:

      您可以通过 FirebaseTools 运行 firestore 计划函数并在本地运行它。启动 shell 命令,例如 npm run build && firebase functions:shell 将允许您调用计划函数,例如:

      export const parseGarminHealthAPIActivityQueue = functions.region('europe-west2').runWith({
        timeoutSeconds: TIMEOUT_IN_SECONDS,
        memory: MEMORY
      }).pubsub.schedule('every 10 minutes').onRun(async (context) => {
        await parseQueueItems(ServiceNames.GarminHealthAPI);
      });
      

      【讨论】:

        【解决方案3】:

        无法从 Firebase 控制台手动触发功能。最好的办法是使用Cloud documentation 中显示的方法,其中涉及使用 gcloud 的 call 命令或 Cloud 控制台的测试选项卡。这些都不是很容易,因为您必须手动将 JSON 有效负载构造到函数中。

        如果我可以提出建议 - 如果您的函数因错误而失败,您应该考虑对您的函数启用重试,并确保您的函数仅在应该重试的情况下生成错误。在发生故障时依赖手动调用不会很好地扩展 - 错误应尽可能由代码处理。

        【讨论】:

        • @I'mJoeToo 我可能会误解这个问题,但是如果您使用Cloud Firestore triggers,如问题中所述,为什么云功能不能在 Firestore 中观察不同的特定文档以进行更改,并且当属性从 false 更改为 true(例如)时,它会触发云功能 - 那将是手动触发该功能,不是吗?您当然可以从控制台或您的应用程序中执行此操作。
        • 对于 Firestore 触发器,是的 - 我可以编写一个脚本来复制文档,删除它,然后重新添加它以重新触发。我希望有其他方法可以重试。对于计划,我发现(感谢您的链接)我可以使用控制台中的“立即运行”按钮。
        猜你喜欢
        • 2020-08-03
        • 2020-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-21
        相关资源
        最近更新 更多