2

我们正在使用 GCP 工作流程通过http.post调用每隔 n 秒执行一些 API 调用以检查状态。

一切都很好,直到最近我们所有的工作流程都开始因内部错误而失败:

{"message":"ResourceLimitError: Memory usage limit exceeded","tags":["ResourceLimitError"]}

我发现,当我们使用with 查询参数时,它的失败发生得比 for和 bodyGET晚一点。POST

这是测试工作流程:

main:
    steps:
        - init:
            assign: 
                - i: 0
                - body:
                    foo: 'thisismyhorsemyhorseisamazing'
        - doRequest:
            call: http.request
            args:
                url: https://{my-location-and-project-id}.cloudfunctions.net/workflow-test
                method: GET
                query: ${body}
            result: res
        - sleepForOneSecond:
            call: sys.sleep
            args:
                seconds: 1
        - logCounter:
            call: sys.log
            args:
                text: ${"Iteration - " + string(i)}
                severity: INFO
        - increaseCounter:
            assign:
                - i: ${i + 1}
        - checkIfFinished:
            switch:
                - condition: ${i < 500}
                  next: doRequest
            next: returnOutput
        - returnOutput:
            return: ${res.body}

它最多可以使用 GET 执行 37 个请求,使用 POST 最多可以执行 32 个请求,然后执行会因错误而停止。而且这个数字不会改变。

作为参考,POST 和 GET 上的 Firebase 函数返回 200 和下一个 JSON:

{
  "bar": "thisismyhorsemyhorseisamazing",
  "fyz": [],
}

任何想法那里出了什么问题?我认为那里没有超过 64Kb 的变量配额。它不应该被计算为所有作业的总和,不是吗?

4

1 回答 1

2

这看起来像是产品的问题,我找到了这个Google tracker,报告了这个问题。

最好继续使用公共问题跟踪器。

于 2021-03-04T20:22:13.060 回答