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.
Dies ist laut Herokus Dokumentation
nicht möglichDer 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.
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.
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:
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.
Tags und Links ruby-on-rails-3 ruby-on-rails heroku