Google Cloud Identity API 在查找群组成员资格时失败,如何添加尝试 except

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

我有一种方法,可以从组织的组列表中读取并逐一查找每个组的成员资格详细信息。

我收到错误:

<HttpError 403 when requesting https://cloudidentity.googleapis.com/v1/groups/040ew0vw43lra72/memberships?view=FULL&alt=json returned "Error(2028): Permission denied for resource groups/040ew0vw43lra72 (or it may not exist).". Details: "Error(2028): Permission denied for resource groups/040ew0vw43lra72 (or it may not exist).">

几乎可以说这个群组不存在,但是API正在从组织下的群组列表中获取它,我尝试通过ID和关联的电子邮件查找该群组,但该群组不在Google群组用户界面中.

这是我创建的方法,它遍历 group_ids 的数据帧并获取成员资格详细信息:

def get_membership_data(service, all_group_df):
    all_member_df = pd.DataFrame()


    try:
        for inx, group in all_group_df.iterrows():
            print(f'Membership details for group {group["name"]}:')
            members = (
                service.groups()
                .memberships()
                .list(parent=group["name"], view="FULL")
                .execute()
            )

            if "memberships" in members:
                for member in members["memberships"]:
                    members_df = pd.DataFrame(index=[6])

                    y = json.dumps(member["preferredMemberKey"])
                    z = json.loads(y)
                    members_df.insert(0, "preferredMemberKey", z["id"])
                    ##print(z['id'])

                    members_df.insert(1, "createTime", member["createTime"])
                    members_df.insert(2, "updateTime", member["updateTime"])
                    members_df.insert(3, "name", group["name"])

                    a = json.dumps(group["groupKey"])
                    b = json.loads(a)
                    members_df.insert(4, "groupKey", b["id"])
                    ##print(b['id'])

                    members_df.insert(5, "displayName", group["displayName"])

                    all_member_df = pd.concat(
                        [all_member_df, members_df], ignore_index=True
                    )

            else:
                print("No 'memberships' key found in the API response")
                
    except Exception as exc:
        print(exc)
        return all_member_df

我尝试添加一个 try except 来捕获它到达该组并失败的情况,但是任务仍然失败。我怎样才能更新这个方法,以便当它的迭代不再存在的任何组时,它只是跳过该迭代/不会使 API 崩溃并继续到下一个组。

python pyspark try-except google-cloud-identity
1个回答
0
投票

只需添加继续语句:

try:
                members = (
                    service.groups()
                    .memberships()
                    .list(parent=group["name"], view="FULL")
                    .execute()
                )
except Exception as exc:
                print(f'Group {group["name"]} No Longer Exists')
                continue
© www.soinside.com 2019 - 2024. All rights reserved.