Ejecución de Goroutine dentro de un controlador http
Si inicio una rutina dentro de un controlador http, ¿se completará incluso después de devolver la respuesta? Aquí hay un código de ejemplo:
package main
import (
"fmt"
"net/http"
"time"
)
func worker() {
fmt.Println("worker started")
time.Sleep(time.Second * 10)
fmt.Println("worker completed")
}
func HomeHandler(w http.ResponseWriter, r *http.Request) {
go worker()
w.Write([]byte("Hello, World!"))
}
func main() {
http.HandleFunc("/home", HomeHandler)
http.ListenAndServe(":8081", nil)
}
En el ejemplo anterior, es queworker
¿Gorutina va a completar en todas las situaciones? ¿O hay algún caso especial cuando no se va a completar?