请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

go runtine 失败了怎么办

func DeleteVideo(w http.ResponseWriter,r *http.Request,p httprouter.Params){
	if !ValidateUser(w,r){
		return
	}
	vid:=p.ByName("vid-id")
	err:=dbops.DeleteVideoInfo(vid)
	if err!=nil{
		log.Printf("error in DeleteVideo: %s",err)
		sendErrorResponse(w,defs.ErrorDBError)
		return
	}
	go utils.SendDeleteVideoRequest(vid) //加入3秒后这里失败了怎么办,下边一行早已经发出了删除成功的提示。
	sendNormalResponse(w,"",204)
}

正在回答 回答被采纳积分+3

1回答

艾文西 2019-02-26 09:38:20

这里可以添加一个重试机制,如果失败重新删除一次。上面dbops已经操作了,库里已经没有这条记录了,所以在数据一致性上是没有问题的。

实际上关于数据回收,更好的办法是通过scheduler定期做clean,异步非commit的任务总会有失败问题。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信