Симуляция параллельных запросов
Постигаю асинхронное программирование на Golang. НАписал не имеющий функционального смысла код
package main
import (
"log"
"net"
"net/http"
"time"
)
func GettingAgent(ch, ch1 chan string, r *http.Request) {
agent := r.Header.Get("User-Agent")
ip, _, _ := net.SplitHostPort(r.RemoteAddr)
nanos := time.Now().UnixNano()
ch <- agent
ch1 <- ip
log.Println(nanos)
}
func test(w http.ResponseWriter, r *http.Request) {
ch := make(chan string)
ch1 := make(chan string)
go GettingAgent(ch, ch1, r)
log.Println(<-ch, "\b---User uses from ", <-ch1)
}
func use() {
http.HandleFunc("/test", test)
http.ListenAndServe(":8181", nil)
}
func main() {
use()
}
и хочу удостовериться что запросы обрабатываются в отдельных горутинах одновременно. В связи с этим возникла необходимость сделать одновременно запрос к серверу с разных устройств. Возможно ли это? И если возможно то как?
Нужно чтобы значение nanos 2х горутин было одинаковым, это будет означать что запросы обработались одновременно.
Ответы (1 шт):
Автор решения: Senior Pomidor
→ Ссылка
по-умолчанию, каждый запрос обрабатывается в отдельной горутине. Поэтому вам не нужно думать о параллелизме во время запросов.