簡體   English   中英

Boto3 無效參數異常

[英]Boto3 InvalidParameterException

我有一些代碼可以調用 AWS 的 Rekognition 服務。 有時它會拋出這個異常:

An error occurred (InvalidParameterException) when calling the DetectLabels operation: Request has Invalid Parameters

但是,我在文檔或代碼中的任何地方都找不到InvalidParameterException ,因此我無法為發生這種情況的時間編寫特定的處理程序。 有誰知道異常所在的庫模塊?

如果您在調用search_faces_by_image看到此異常,則可能表示您提供的圖像中沒有可檢測到的人臉。 您可以在API_SearchFacesByImage 中查看可能的異常列表。

要處理此異常,您可以編寫如下代碼:

import boto3
rek = boto3.client('rekognition')

def lookup_faces(image, collection_id):
    try:
        faces = rek.search_faces_by_image(
            CollectionId=collection_id,
            Image=image,
            FaceMatchThreshold=95
        )
        logger.info('faces detected: {}'.format(faces))
        return faces
    except rek.exceptions.InvalidParameterException as e:
        logger.debug('no faces detected')
        return None

我在boto/cognito/identity/exceptions.py找到了它:

from boto.exception import BotoServerError

class InvalidParameterException(BotoServerError):
    pass

這是 AWS 的一個誤導性錯誤,當源圖像不包含任何可檢測的人臉時,就會出現此錯誤。 確保您的源圖像具有可檢測的面部。

在帶有 boto3 的 Python3 中,您可以執行以下操作:

from botocore.exceptions import ClientError

catch ClientError as e:

如果您使用 boto3,jarmod 的答案應該很完美。

要更明確地回答有關InvalidParameterException所在位置的問題(在boto3 ):可以通過boto3 rekognition 客戶端的類實例boto3它:

import boto3
client = boto3.client('rekognition')

現在,可以通過client.exceptions.InvalidParameterException訪問異常(有關特定示例,請參閱 jarmod 的答案)。

Stéphane Bruckert 建議使用從boto導入的建議對我不起作用,因為使用此導入的特定處理程序似乎沒有捕獲異常(但我沒有對其進行廣泛測試)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM