你在后台做所有的处理,但你仍然在等待它完成。解决办法就是不要等待。最好的解决方案是将所有的处理移到其他地方的一个函数中,您只需使用go调用它就可以在后台运行它,但最简单的解决方案是让它保持内联 w.WriteHeader(http.StatusAccepted)go func() { // START PRODUCER/CONSUMER jobs := make(chan *Job, 100) // buffered channel results := make(chan *Job, 100) // buffered channel // start consumers for i := 0; i < 5; i++ { // 5 consumers wg.Add(1) go consume(i, jobs, results) } // start producing go produce(jobs, csvFile) // start processing wg2.Add(1) go process(results) wg.Wait() // wait for all workers to finish processing jobs close(results) wg2.Wait() // wait for process to finish log.Println("=