Golang - post 请求不是并行发送的

问题描述 投票:0回答:0

我想发送几个并行的 POST 请求并保存结果,但我可以看到处理不是并行的。

func process(
    provider models.Provider, 
    query models.Query, 
    db *sql.DB, 
    ch chan<- models.SocketResource
) {
   body, raw, err := types.PostJSON(urlStr, string(jsonData), map[string]string{"Content-Type": "application/json"}, types.Proxy{}, jar)
   response := models.RequestAnswers{}
    _ = json.Unmarshal([]byte(body), &response)
   ch<- response
}

func getList() {
   ch := make(chan models.SocketResource)
   for _, provider := range providers {
     go process(provider, query, db, ch)
   }
   var answers []models.SocketResource
   for range providers {
     start := time.Now()
     log.Printf("Start time: %s", start)
     res := <-ch
     answers = append(answers, res)
   }
}

此代码通常工作 ~ 30 秒,但我预计将近 5 秒。我已经记录了开始时间并收到了这样的数据:

2023/02/20 15:58:41 Start time: 2023-02-20 15:58:41.852120551 +0300 +03 m=+10.902878529
2023/02/20 15:58:41 Start time: 2023-02-20 15:58:41.86559013 +0300 +03 m=+10.916348048
2023/02/20 15:58:41 Start time: 2023-02-20 15:58:41.866299284 +0300 +03 m=+10.91705718
22023/02/20 15:58:46 Start time: 2023-02-20 15:58:46.713829448 +0300 +03 m=+15.764587376
2023/02/20 15:58:57 Start time: 2023-02-20 15:58:57.952024136 +0300 +03 m=+27.002782084
2023/02/20 15:59:06 Start time: 2023-02-20 15:59:06.014041727 +0300 +03 m=+35.064799666
2023/02/20 15:59:06 Start time: 2023-02-20 15:59:06.384299333 +0300 +03 m=+35.435057271
2023/02/20 15:59:06 Start time: 2023-02-20 15:59:06.778590117 +0300 +03 m=+35.829348065
2023/02/20 15:59:11 Start time: 2023-02-20 15:59:11.866662932 +0300 +03 m=+40.917420830
2023/02/20 15:59:11 Start time: 2023-02-20 15:59:11.866689523 +0300 +03 m=+40.917447421

如果我添加更多提供者,first 和 last 之间的间隔通常是 ~30 秒

go goroutine
© www.soinside.com 2019 - 2024. All rights reserved.