python-3.x - Azure Functions HTTP 触发器:如何将异常从 python 工作日志返回给 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 文件中定义的分区键有关。
推荐阅读
- xml - T-SQL XML Modify Syntax 使用变量动态设置标签
- javascript - 如何在转换返回对象的一部分时在 Javascript 中执行数组映射?
- python - Flask 生成独立进程(fork)导致端口在使用中
- hyperledger-fabric - Hyperledger Fabric 多组织设置
- android - 相同的 Android admob 单元仅显示在两个应用程序之一中
- java - 为什么 getJdbcTemplate().query 升级 mySql 后返回空列表?
- r - 在 R 上安装 WGCNA 包时出现错误消息
- php - 通过 softaculous 全新安装 Laravel - 找不到文件
- javascript - 错误:未捕获的类型错误:无法读取未定义的属性“城市”以及如何在 javascript 的对象键中包含破折号?
- delphi - 双击 Windows 服务可执行文件进行配置