亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

已部署的應用程序會立即自行關閉

已部署的應用程序會立即自行關閉

Go
子衿沉夜 2022-09-26 19:44:28
我有一個去休息 API 應用程序。我把它多克化了,并把它部署到了庫伯內特斯。它正在我的本地工作。但是在 Kubernetes 中,應用程序會自行關閉,并且 Pod 會重新啟動。它不會打印任何內容、任何日志或任何故障。import ( " github.com/gorilla/mux""net/http""log")   func main() {    controller := controllers.Controllers{}    router := mux.NewRouter()    router.HandleFunc("/customer", controller.GetCustomer()).Methods("GET")    router.HandleFunc("/customer", controller.InsertCustomer()).Methods("POST")    router.HandleFunc("/healthcheck", controller.HealthCheck())    addr := ":" + os.Getenv("PORT")    srv := &http.Server{Addr: addr, Handler: router}    go func() {        if err := srv.ListenAndServe(); err != nil {            log.Fatalf("listenAndServe failed: %v", err)        }    }()    println("reached here")}令人驚訝的是,當我查看日志時,它會打印“到達這里”行。我檢查了變量,它也是正確的。我懷疑這個電話失敗了,但我找不到一個合理的答案。envlistenAndServe
查看完整描述

1 回答

?
臨摹微笑

TA貢獻1982條經驗 獲得超2個贊

函數結束時,你的應用也會結束。它不會等待其他非主戈魯丁完成。請參閱規范:程序執行:main()

程序執行首先初始化主包,然后調用函數 。當該函數調用返回時,程序將退出。它不會等待其他(非)戈魯廷完成。mainmain

由于你在新的 goroutine 中啟動列表程序,因此沒有任何“阻塞”,也沒有什么可做的(打印后),因此你的應用將結束。請注意,內置 println() 打印到標準錯誤,這就是為什么您可能看不到任何日志(標準輸出和標準錯誤可能會保存/重定向到不同位置)。main()"reached here"

最簡單的“解決方法”是開始收聽:main()

srv := &http.Server{Addr: addr, Handler: router}


if err := srv.ListenAndServe(); err != nil {

    log.Fatalf("listenAndServe failed: %v", err)

}


查看完整回答
反對 回復 2022-09-26
  • 1 回答
  • 0 關注
  • 84 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號