Wie ändere ich das Zeitlimit für die Standardanforderung auf Heroku?

8

Meine App ist auf Rails aufgebaut und mein Produktionsserver ist auf Heroku.

Meine Anwendung wird hauptsächlich für den Datei-Upload und die Dateiverarbeitung verwendet. Die Verarbeitung der Anfrage dauert mehr als 50 Sekunden. Gemäß der Heroku-Konfiguration reagiert meine Anfrage nicht rechtzeitig und sendet mich aufgrund eines Anfrage-Timeouts an die Anwendungsfehlerseite.

Wie kann ich die Konfiguration der Anfrage-Timeouts auf Heroku ändern?

Bitte helfen Sie mir, damit die Anwendung funktioniert.

    
jayesh 13.02.2014, 09:01
quelle

3 Antworten

14

Dies ist laut Herokus Dokumentation

nicht möglich
  

Der Zeitüberschreitungswert ist nicht konfigurierbar. Wenn Ihr Server länger benötigt   Wenn Sie eine Anfrage länger als 30 Sekunden ausführen möchten, empfehlen wir, diese zu verschieben   Arbeiten Sie mit einer Hintergrundaufgabe oder einem Mitarbeiter, um regelmäßig Ihren Server zu pingen   um zu sehen, ob die Verarbeitungsanforderung beendet wurde. Dieses Muster gibt frei   Ihr Web verarbeitet mehr Arbeit und sinkt insgesamt   Anwendungsreaktionszeiten.

    
Santhosh 13.02.2014 09:13
quelle
0

Sie sollten Ihre großen Dateien direkt auf Amazon S3 oder ähnliches hochladen und dann die Datei mit einem Heroku-Hintergrundarbeiter bearbeiten. In der Regel verwendet Ihre Webseite eine Art Abfrage (normalerweise eine AJAX-Anfrage), um zu sehen, wann die Verarbeitung abgeschlossen ist, und aktualisiert das Frontend.

    
jordelver 13.02.2014 09:48
quelle
0

Wie bereits erwähnt, müssen Sie es im Hintergrund verarbeiten, da Sie das von Heroku erzwungene Zeitlimit nicht ändern können. Dies ist eigentlich eine gute Sache, weil es ein viel besseres Design ermöglicht, wo die Webanwendung reaktionsfähig ist und es auch viel besser skalieren kann.

Was das bedeutet ist, dass Sie etwas wie zum Beispiel verzögerten Job verwenden müssen und Sie können darüber auf Heroku hier .

Der Fluss der Dinge wäre etwa so:

  1. Laden Sie das Dokument innerhalb der von Heroku erzwungenen Beschränkung (Timeout) hoch.
  2. Planen Sie einen Hintergrundjob, um das Dokument zu verarbeiten, und geben Sie 200 OK zum Browser zurück.
  3. Der Browser
  4. wartet auf die Beendigung durch z.B. AJAX-Hintergrundabfrage eines Flags, um zu sehen, wann der Hintergrundjob bereit ist.
  5. Der verzögerte Job nimmt die geplante Arbeit auf und nach der Fertigstellung setzt er das Flag, um anzuzeigen, dass der Hintergrundjob erledigt ist.
  6. Browser kann jetzt den Benutzer informieren, dass es getan ist (bis zu Ihrer Anwendung zu wissen, was passt).

Dies ist eine Idee, wie das gemacht werden kann. Sie haben ein paar verschiedene Möglichkeiten, wie Sie es tun können, und der verzögerte Job ist nur einer, aus dem Sie auswählen können.

    
murrekatt 13.02.2014 09:57
quelle