如何让我的 GCP 工作流程在遇到 404 错误时保持循环?

问题描述 投票:0回答:1

我正在开发 GCP 工作流程并遇到问题 - 当我遇到 404 错误时循环停止。我尝试查看 GCP 文档,但到目前为止还没有成功。关于如何让循环继续下去,即使遇到 404 错误,有什么想法吗?

第二部分:

SendNotification
,返回404错误。

我的 GCP 语法是这样的:

main:
  steps:
    - getOnboardingPersons:
        call: http.get
        args:
          url: ${sys.get_env("SERVER_URL") + "/GetPersonIds"}
          auth: 
            type: OIDC
        result: personsForOnboardingEvents
    - loopThroughResults:      
        try:
          for:
            value: onboardingPayload
            index: idx
            in: ${personsForOnboardingEvents.body}
            steps:
              - sendNotification:
                  call: SendNotification
                  args:
                    personIds: ${onboardingPayload.personIds}
                    notificationEvent: ${onboardingPayload.notificationEvent}
        except:
          as: e
          steps:
            - TypeError:
                return: "No person ids found in personsForOnboardingEvents."
            - known_errors:
                switch:
                  - condition: ${e.code == 404}
                    return: ${e.body}
            - unhandled_exception:
                return: ${e.message}
    - theEnd:
        return: ${personsForOnboardingEvents}

SendNotification:
    params: [personIds, notificationEvent]
    steps:
      - loop:
          try:
            for:
              value: personId
              index: idx
              in: ${personIds}
              steps:
                - httpCall:
                      call: http.post
                      args:
                        url: ${sys.get_env("SERVER_URL") + "/SendByPersonId"}
                        auth: 
                          type: OIDC
                        body:
                          PersonId: ${personId}
                          NotificationEventName: ${notificationEvent}
                      result: httpResult
          except:
            as: e
            steps:
              - unhandled_exception:
                  return: ${e.body}

personsForOnboardingEvents - 是每个事件的 personid 列表:

[
  {
    "personIds": [],
    "notificationEvent": "EventA"
  },
  {
    "personIds": [],
    "notificationEvent": "EventB"
  },
  {
    "personIds": [],
    "notificationEvent": "EventC"
  },
]
google-cloud-platform google-cloud-dataflow workflow
1个回答
0
投票

您的 try/ except 是围绕 for 循环的。因此,异常不是在 for 循环内部捕获,而是在外部捕获,因此循环被破坏。

必须将其放在for循环内的步骤中。这样,即使出现异常,也可以继续循环


© www.soinside.com 2019 - 2024. All rights reserved.