Положить ListenAndServe в Goroutine - PullRequest
       3

Положить ListenAndServe в Goroutine

0 голосов
/ 30 сентября 2019

Мне сложно оценить, будут ли побочные эффекты запуска http.ListenAndServe в goroutine.

Чтобы прометей мог собирать данные статистики из конечной точки / metrics службы, выполняющейkafkaclient (запуск потребителя kafka в бесконечном цикле for)

var addr = flag.String("listen-address", ":8070", "The address to listen on for HTTP requests.")

func main() {

   flag.Parse()
   http.Handle("/metrics", promhttp.Handler())
   go http.ListenAndServe(*addr, nil)

   for {....}

Каковы наилучшие методы запуска конечной точки мониторинга и запуска бесконечного цикла?

1 Ответ

5 голосов
/ 30 сентября 2019

Рекомендуется проверять и обрабатывать ошибки. Ошибка от http.ListenAndServe игнорируется.

Если возврат из http.ListenAndServe является фатальным для приложения, то используйте следующий код или какой-либо другой вариант для обработки ошибки.

go func() { 
     log.Fatal(http.ListenAndServe(*addr, nil)) 
}()

Вызов log.Fatal регистрируетошибка и выходит из приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...