2014-11-28 14 views
6

Posso utilizzare Goroutine in Google App Engine?Posso utilizzare Goroutine in Google App Engine?

L'esempio seguente sembra funzionare, ma è possibile utilizzarlo? Il mio obiettivo è quello di eseguire un'elaborazione in background molto leggera (mentre un vero lavoro in coda delle attività sembra troppo pesante) e voglio restituire immediatamente il risultato al cliente.

func MyHandler(w http.ResponseWriter, r *http.Request) { 

    go func() { 
    // do something here but return immediately 
    }() 

    return // 200 
} 
+0

Questo thread è probabilmente di interesse: https://groups.google.com/forum/#!topic/google-appengine-go/fv1BgRHcH_M – Greg

risposta

7

Sì, si può fare, ma tenere conto goroutines limitazioni per AppEngine:

L'ambiente di runtime Go for App Engine fornisce il supporto completo per goroutines, ma non per l'esecuzione parallela: goroutines sono programmati su un singolo thread del sistema operativo. Questa restrizione a thread singolo può essere revocata nelle versioni future. Più richieste possono essere gestite contemporaneamente da da una determinata istanza; ciò significa che se una richiesta è, , in attesa di una chiamata API datastore, un'altra richiesta potrebbe essere elaborata dalla stessa istanza.

Fonte: https://cloud.google.com/appengine/docs/go/runtime

Vedi i dettagli qui: https://cloud.google.com/appengine/docs/go/

+0

Secondo [questo] (https://talks.golang.org/2013/highperf.slide#25) quello che stai dicendo sembra essere sbagliato. Mi sto perdendo qualcosa? – inf

+0

Puoi usare le goroutine. Per accedere ai servizi appengine è necessario il contesto di background, (ancora) disponibile tramite chiamata di appengine.RunInBackground. –