November 2017
Intermediate to advanced
670 pages
17h 35m
English
Our Run method launches a Goroutine j.NumRequests times. Each Goroutine runs this code:
go func() { client := j.Client j.makeRequest(client) wg.Done()}()
The makeRequest function is called in a goroutine and passed to the client. We use our Debug logger to indicate that we are about to make a request and record the start time:
func (j *Job) makeRequest(c Client) { Debug.Printf("makeRequest: ") start := time.Now() resp, err := c.Do(j.Request) if err == nil { io.Copy(ioutil.Discard, resp.Body) resp.Body.Close() } t := time.Now() finish := t.Sub(start) j.responseChan <- &response{ duration: finish, err: err, }}
The key line is resp, err := c.Do(j.Request).