我有一个调用API的库。
由于我正在调用的API的一些限制,我希望能够使用不同的凭据重试该呼叫。
我将函数内部传递给库函数。
但是,当我尝试从调用中捕获任何异常时,没有异常被捕获,我最终得到了代码退出和堆栈跟踪。
代码如下所示
import the_library
def making_the_call(api_call):
try:
api_call()
except TheKeyExceptionIamLookingFor:
# change creds and redo the call
except OtherExceptionsICareAboutAndExpect:
# Do other stuff to handle
making_the_call(the_library.some_api_call(the_args))
这是在aws lambda中运行的,所以我不知道这是否有助于解决这个问题。
我在python控制台中运行了类似的代码,它从带有参数的传递函数中捕获异常,但是此代码只是退出并给我一个堆栈跟踪,甚至显示我正在寻找并计划捕获的确切异常。
答案 0 :(得分:3)
单独传递所有内容你会做
def make_call(api_call, *args, **kwargs):
try:
return api_call(*args, **kwargs)
except SomeException:
# change args and kwargs
return make_call(api_call, *args, **kwargs)
make_call(the_library.some_api_call, 'apple', 1, 2, 3)
请注意()
之后缺少some_api_call
。内部make_call
args
内部为list
,kwargs
(关键字参数)为dict