我必須遵循設(shè)置。我有一個多路復用 HTTP 服務(wù)器,我想向其添加上下文以提高彈性。srv := http.Server{ Addr: ":" + _operatorPortStr, WriteTimeout: 8 * time.Second, Handler: http.TimeoutHandler(router, 5*time.Second, "Timeout!\n"),}srv.ListenAndServe()我現(xiàn)在有了我的處理函數(shù),如果 HTTP 請求達到超時,我想終止它。func Deploy(w http.ResponseWriter, r *http.Request) {loadConfigs()calltos3()updateResource()}主要問題是不可能將上下文傳遞給每個函數(shù),因為它們的級別非常高。那么在超時后向處理程序添加上下文以終止請求的正確方法是什么?
1 回答

叮當貓咪
TA貢獻1776條經(jīng)驗 獲得超12個贊
超時處理程序在請求中設(shè)置上下文。您可以使用請求上下文來檢查請求是否超時:
func Deploy(w http.ResponseWriter, r *http.Request) {
...
select {
case <-r.Context().Done():
// Timed out
default:
}
...
}
- 1 回答
- 0 關(guān)注
- 94 瀏覽
添加回答
舉報
0/150
提交
取消