golang http.Get запрос работает обычным способом, но не работает внутри go подпрограмм - PullRequest
0 голосов
/ 29 февраля 2020

У меня есть сервер, работающий с GET-запросами. Нужно создать высокую нагрузку для этого сервера Простой тестовый клиент:

func main(){
    http.Get("http://localhost:8080/8")
}

Работает, сервер покажет, что получил запрос

Еще один тест:

func main(){
    for i:=0; i<5; i++{
        go func() {
            http.Get("http://localhost:8080/8")
        }()
    }
}

или даже

func main(){
    for i:=0; i<5; i++{
        go http.Get("http://localhost:8080/8")
    }
}

Не работает, сервер не получает запросов

Итак, в чем проблема?

1 Ответ

0 голосов
/ 29 февраля 2020

Я думаю, это потому, что ваше приложение завершилось сразу после вашего l oop end.

, чтобы справиться с этим, вы можете использовать WaitGroup . и измени свой код так:

func main(){

    wg := sync.Waitgroup{}

    for i:=0; i<5; i++{
        wg.Add(1)
        go func() {
            defer wg.Done()
            http.Get("http://localhost:8080/8")
        }()
    }

    wg.Wait()
}
...