Antwort

1

Der optimale Weg wird in Storage Bucket gespeichert und dann von dort aus bedient.

Es erlaubt Ihnen auch zu:

  • vorbereiten Datei von einem Taskqueue Job, der auf 60 Sekunden beschränkt ist, so dass Sie viel mehr Daten verarbeiten kann, behandeln Fehler, etc
  • geben Benutzer Fähigkeit zu pausieren/Download fortsetzen, einen Download-Manager verwenden, etc, w/Frontend o zwingt den Job von Anfang an jedes Mal

Grundsätzlich ich schlage zu starten:

  1. geben Benutzer ein ticketId für Back-End-Job
  2. send Aufgabe Taskqueue
  3. Daten in diesem Backend Job vorbereiten, um Storage-Bucket laden, stellen ticketId als getan
  4. Browser wartet, bis ticketId ist markiert als getan (AJAX der Kanal-API)
  5. dann gibt ein spezielles Servlet diese Datei aus einem Speicher

sind es zwei Möglichkeiten diese Datei später dienen:

(optimal) Geben Sie einen Link direkt zu Storage-Objekt:

oder mit Blobstore:

BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService(); 
BlobKey blobKey = blobstoreService.createGsBlobKey("/gs/<bucket>/<object>"); 
blobstoreService.serve(blobKey, resp); //where resp is your HttpServletResponse 
+0

Wenn die ZIP-Datei ist groß nicht ich die gleichen Probleme mit dem Servlet aus Schritt 5 haben? – RCB

+1

Nein, wenn Sie es nicht manuell über Servlet kopieren. siehe Antwortupdate –

+0

Meine Aufgabe wird abgebrochen, weil ich beim Zugriff auf den GCService Timeout erhalte. Die Zip's sind riesig. – RCB