我有一个Azure函数作为API端点,如果出现异常,我需要一种既向用户返回500错误,又用错误代码退出程序的方法。
async def main(req: func.HttpRequest) -> func.HttpResponse:
try:
<do the stuff>
logger.info(f"I'm causing an exception! {5 / 0}")
return func.HttpResponse(
"Data sent successfuly",
status_code=200
)
except Exception:
logger.exception("Hit an exception at the top level")
return func.HttpResponse(
"API - Hit an exception at the top level >_<",
status_code=500
)
sys.exit(1) <---------------- This line is inaccessible
字符串
因为我使用return
来发送API响应,所以它也退出此函数。问题是,使用Azure Functions,我无法访问更高级别的调用者,如果我不使用sys.exit(1)
,即使在崩溃时,函数也会报告它成功运行。
1条答案
按热度按时间yacmzcpb1#
如何在返回API响应的同时使程序失败?
在Azure函数中,你可以同时做这两件事,但不能同时做,你甚至可以得到失败或API响应,API响应出现在Azure函数的末尾,而不是中间或开始,如果你得到API响应本身意味着函数成功执行。
字符串
输出量:
的数据
的
函数的最后一个可执行语句是return,在return之前不要做任何事情,因为它不会执行或识别为命令。