Wie zu erhöhen Heroku 30s timeout h12
Ich bin mit einer rails-app, die einen json-webservice-Aufruf von einer lokalen client in c++ entwickelt (ein post-Befehl mit einem multipart-json-Formular, durch hochladen einer Streaming-Datei)
Ich schon gelesen auf Heroku docs über mesh-routing Angabe der 30er Jahre Heroku limit für http-verbindungen, und über die long polling alternative, bezogen auf Arbeiter dynos.
Während meinem Anruf, den ich verarbeiten von pdf-Dokumenten und einfügen einer Signatur in Sie. Diese pdf-Dokumente können entweder 100kb oder 11 MB (oder vielleicht mehr).
Verstehe ich, dass ich irgendwann zu tun haben, diese Aktion auf einem hintergrund-Prozess, aber ich möchte vermeiden, es zu tun, bevor ich unbedingt zu.
Kennen Sie eine Erhöhung dieses Timeouts?
Wie Sie sehen können, in meinem code unten, ich bin von der Verarbeitung meines Dokuments, nachdem es gespeichert wird (ich Tat dies in einer after_save
, aber geändert, um den controller in der Hoffnung zu senden, die Antwort vor der Verarbeitung).
Ich würde also erwarten, daß der client eine Antwort erhalten, bevor das Dokument verarbeiten, aber ich bin immer noch mit einem timeout auf die heroku Seite, und ein Fehler auf meinem client-Seite.
Das alles funktioniert gut mit kleineren Unterlagen, aber für einen 121 Seiten pdf-Dokument mit nur 400 Kb, es bläst..
Am Ende, meine Datei wird hochgeladen, so alles, was ich brauchen, ist für diese Reaktion zu gehen, um meine client-app, bevor die timeout-Antwort gesendet...
Irgendwelche Vorschläge?
mein Fehler:
at=error code=H12 desc="Request timeout" method=POST path=/documents host=fierce-beach-2720.herokuapp.com fwd="81.193.155.217/bl4-155-217.dsl.telepac.pt" dyno=web.1 queue=0ms wait=0ms connect=1ms service=32272ms status=503 bytes=0
mein controller :
respond_to do |format|
if @document.save!
format.html { redirect_to root_path, :flash => { :success => 'Document was successfully created.'} }
format.json { render json: @document, status: :created, location: @document}
@document.document_process
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich beendet mit verzögert job + Arbeitslose, und jetzt meine Arbeiter dynos nur ausführen, wenn Sie müssen.
Als heroku hat die freie 750 Stunden gratis per app planen, wenn man eine low-Verwendung, die Sie möglicherweise in der Lage zu halten, verwenden Sie es kostenlos.
war der Vorschlag: verwenden Sie einen hintergrund-Prozess!
habe ich gelesen, dass Sie es vermeiden wollen, aber es gibt keine Möglichkeit um ihn herum! es ist eine bewährte Praxis, die in web-apps zurück, um die Kunden so schnell wie möglich, denn es entlastet Ressourcen. wenn Sie haben gerade einen dyno läuft auf heroku und Sie haben mehrere Anfragen, werden Sie blockiert sind, für Ihr timeout und kein Benutzer auf Ihre Seite zugreifen. Sie können leicht zu denial-of-service-Fällen, wenn Sie so longrunning Prozesse.
in Fall, dass Sie nicht wollen, zu tun hintergrund-Prozesse wegen der Kosten, haben Sie einen Blick auf freemium: https://github.com/phoet/freemium