2012-03-28 19 views
3

Ich habe eine App auf Heroku gehostet und diese App speichert viele Dateninformationen in der Datenbank (es dauert etwa 70 Sekunden).HTTP-Streaming auf Heroku (viele Daten hochladen)

Heroku nach 30 Sekunden Dauer von jeder Anfrage der Seite Fehler anzeigen H12 über Timeout, wie könnte ich ein paar Informationen-Nachricht angezeigt werden, während der Upload durchgeführt wird anstelle der Anzeige H12 Fehler entdeckt?

Ich habe nach einem Beispiel gesucht, aber ich war nicht sehr erfolgreich ... Ich habe nur ein paar Hinweise gefunden, dass ich jedes Mal (zB 15 Sekunden) eine Kontrollzeichenfolge vom Server senden muss, aber Ich habe bereits ein bestimmtes Beispiel nicht gefunden, wie man das macht ...

Irgendwelche Ratschläge, wie man das macht?

Vielen Dank im Voraus.

Antwort

0

Es ist eine schlechte Übung, wenn Ihre Benutzer 70 Sekunden warten müssen, bis eine Anfrage auf einer beliebigen Plattform abgeschlossen werden kann. Heroku erzwingt diese Best Practice nur, indem er das 30-Sekunden-Timeout implementiert. Die wirkliche Frage ist also, wie man die Anwendung besser gestalten kann.

Heroku hat einen Artikel über Hintergrund Arbeiter Umsetzung, die ausgelegt sind, genau dieses Problem zu lösen: https://devcenter.heroku.com/articles/queueing

Der grundlegende Ansatz ist die Web-Anfrage zu haben, einen Hintergrundjob einplanen (Delayed Job verwenden, Queue Classic Resque usw. ..) und antworten Sie sofort auf den Benutzer mit einem Indikator für den Fortschritt. Dann macht ein Prüfstand, der einen Hintergrundarbeiter ausführt, das schwere Heben des Speicherns der Information zu der DB. Wenn es fertig ist, wird ein Flag in einer Datenbank oder einem anderen Speichermechanismus umgelegt, der dem Web-Client mitteilt, dass der Job nun abgeschlossen ist.

Das Ausführen eines Hintergrundarbeiters erfordert einen anderen Prüfpunkt. Wenn Sie versuchen, diese Ausgaben zu vermeiden, können Sie in Girl Friday suchen, die viele mit Erfolg berichten.

Hoffe, dass hilft.