try:
# 调用失败问题比较复杂
inv_stub.Sell(inventory_pb2.SellInfo(orderSn=order_sn, goodsInfo=goods_sell_info))
except grpc.RpcError as e:
local_execute_dict[order_sn]["code"] = grpc.StatusCode.INTERNAL
local_execute_dict[order_sn]["detail"] = f"扣减库存失败:{str(e)}"
err_code = e.code()
if err_code == grpc.StatusCode.UNKNOWN or err_code == grpc.StatusCode.DEADLINE_EXCEEDED:
return TransactionStatus.COMMIT
else:
# 库存不足, 库存服务没有扣减库存,不需要发送归还库存消息
return TransactionStatus.ROLLBACK
老师,您说扣减库存的时候遇到异常之后,如果是grpc.StatusCode.UNKNOWN和grpc.StatusCode.DEADLINE_EXCEEDED这两种错误,需要确认归还库存的消息。
grpc.StatusCode.DEADLINE_EXCEEDED表示超时,实际上库存确实扣减了,所以需要归还库存,这个我理解。
但是为什么grpc.StatusCode.UNKNOWN这个错误也要归还库存啊?出现这个错误库存一定被扣减了吗?万一库存没被扣减,结果我们确认归还库存的消息,那库存不就变多了嘛,这是不是有问题呀。
所以想问一下grpc.StatusCode.UNKNOWN这个错误的具体含义是什么意思,用在此处真的合适吗?