2014-11-28 7 views
6

Kann ich Goroutines in Google App Engine verwenden?Kann ich Goroutines in Google App Engine verwenden?

Das folgende Beispiel scheint zu funktionieren, aber kann ich es verwenden? Mein Ziel ist es, eine sehr leichte Hintergrundverarbeitung durchzuführen (während sich ein Job in der eigentlichen Aufgabenwarteschlange zu schwer anfühlt) und ich möchte das Ergebnis sofort an den Client zurückgeben.

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

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

    return // 200 
} 
+0

Dieser Thread wahrscheinlich von Interesse ist: https://groups.google.com/forum/#!topic/google-appengine-go/fv1BgRHcH_M – Greg

Antwort

7

Ja, können Sie das tun, aber zu berücksichtigen goroutines Einschränkungen für App Engine nehmen:

Die Go-Laufzeitumgebung für App Engine für goroutines volle Unterstützung bietet, aber nicht für die parallele Ausführung: goroutines sind geplant auf einem einzigen Betriebssystem-Thread. Diese Ein-Thread-Einschränkung kann in zukünftigen Versionen aufgehoben werden. Mehrere Anfragen können gleichzeitig von einer gegebenen Instanz bearbeitet werden; ; Das heißt, wenn eine Anfrage lautet, , auf einen Datenspeicher-API-Aufruf zu warten, kann eine weitere Anfrage von derselben Instanz verarbeitet werden.

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

mehr Details hier: https://cloud.google.com/appengine/docs/go/

+0

Laut [this] (https://talks.golang.org/2013/highperf.slide#25) scheint das, was Sie sagen, falsch zu sein. Fehle ich etwas? – inf

+0

Sie können Gououtines verwenden. Für den Zugriff auf die Appengine-Dienste benötigen Sie Hintergrundkontext, der (noch) über den Aufruf von appengine.RunInBackground verfügbar ist. –