我有一些调用AWS的Rekognition服务的代码。有时会抛出这个异常:
An error occurred (InvalidParameterException) when calling the DetectLabels operation: Request has Invalid Parameters
但是,我无法在文档或代码中的任何位置找到InvalidParameterException
,因此我无法在发生这种情况时编写特定的处理程序。有谁知道该例外的库模块是什么?
答案 0 :(得分:3)
我在boto/cognito/identity/exceptions.py
找到了它:
from boto.exception import BotoServerError
class InvalidParameterException(BotoServerError):
pass
答案 1 :(得分:0)
在Python3中使用boto3,你可以这样做:
from botocore.exceptions import ClientError
catch ClientError as e:
答案 2 :(得分:0)
这是AWS的一个误导性错误,当源图像不包含任何可检测到的脸部时会发生此错误。确保您的源图像有可检测到的面孔。
答案 3 :(得分:0)
如果您在响应调用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
答案 4 :(得分:0)
jarmod 的答案应该很完美,如果你使用 boto3。
要更明确地回答有关 InvalidParameterException
所在位置(在 boto3
中)的问题:可以通过 boto3
rekognition 客户端的类实例访问它:
import boto3
client = boto3.client('rekognition')
现在,可以通过 client.exceptions.InvalidParameterException
访问异常(具体示例请参见 jarmod 的回答)。
Stéphane Bruckert 建议使用从 boto
导入的建议对我不起作用,因为使用此导入的特定处理程序似乎没有捕获异常(但我没有对其进行广泛测试)。