我正在开发 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"
},
]
您的 try/ except 是围绕 for 循环的。因此,异常不是在 for 循环内部捕获,而是在外部捕获,因此循环被破坏。
必须将其放在for循环内的步骤中。这样,即使出现异常,也可以继续循环