Azure Functions HTTP 触发器:如何将异常从 python worker log 返回到 API 调用



我是 Azure 函数的新手 想知道如何将异常从 python 工作线程日志返回给 API 调用者。

在具有 COSMOS DB 绑定的 HTTP 触发器中,在触发对绑定的插入调用时,如果数据已经存在,则失败

"System.Private.CoreLib: 执行函数时的异常:Functions.insertEntityData。Microsoft.Azure.DocumentDB.Core:系统中已存在具有指定 ID 的实体。

如何将此消息发送回最终用户?它不会在任何地方被捕获。

def main(req: func.HttpRequest, cosmosdata: func.Out[func.Document]) -> func.HttpResponse:
try:
message = ""
logging.info('Python HTTP trigger function processed a request.')
entity_name = req.route_params['entity']
status_code = 500
payload = req.get_json()
if payload:
try:
logging.info(payload)
resultant = cosmosdata.set(func.Document.from_dict(payload))
logging.info(resultant)
status_code = 200
message = "Insert Successful to %s" % (entity_name)
except Exception as e:
return func.HttpResponse(str(e), status_code=500)
else:
status_code = 400
message = "Please pass data in the POST Request"
except Exception as e:
return func.HttpResponse(str(e), status_code=500)
return func.HttpResponse(message, status_code=500)

try/catch 块不起作用,因为你正在使用到 Cosmos DB 的输出绑定,这是失败的绑定。但是,对我来说它看起来也很奇怪,因为默认情况下它执行和 Upsert 操作。

我相信问题与 function.json 文件中定义的分区键有关。

https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-cosmosdb-v2#input---python-examples

最新更新