AJAX-Anfrage nach 1 Minute Zeitüberschreitung

Vor einiger Zeit habe ich ein Discourse-Plugin erstellt, das eine Controller-Methode über ajax aufruft und dann das Ergebnis zurückgibt. Diese spezielle Anfrage kann einige Minuten dauern, und das funktionierte bisher einwandfrei.
Aber jetzt, nach langer Zeit, habe ich das Plugin in der aktuellen Discourse-Version ausprobiert und stoße auf ein Problem, bei dem die Anfrage nach 1 Minute abgebrochen wird.

Der Code sieht also so aus:

ajax("/my-plugin/import", {
        type: "POST",
        data: {
          categoryId: this.categoryId,
          otherData: ...
        }
      }).then((result) => { ... });

Und die Fehlermeldung, die ich nach 1 Minute sehe, lautet:

Discourse Ember CLI Proxy Error

FetchError: request to http://127.0.0.1:3000/my-plugin/import failed, reason: socket hang up
at ClientRequest. (file:///src/app/assets/javascripts/node_modules/node-fetch/src/index.js:108:11)
at ClientRequest.emit (node:events:526:35)
at Socket.socketOnEnd (node:_http_client:525:9)
at Socket.emit (node:events:526:35)
at endReadableNT (node:internal/streams/readable:1359:12)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21)

Ich versuche zu verstehen, warum sich dieses Verhalten im letzten Jahr geändert haben könnte? Und ob es eine Möglichkeit gibt, die Timeout-Einstellung zu ändern.

Ich glaube nicht, dass es hier kürzlich eine Änderung gab. Discoures Backend ist so konfiguriert, dass Anfragen nach 60 Sekunden in der Entwicklung oder 30 Sekunden in der Produktion abgebrochen werden.

Es sieht so aus, als ob dies in der Entwicklung über die Umgebungsvariable UNICORN_TIMEOUT konfiguriert werden kann. Die Produktion ist jedoch fest auf 30 Sekunden eingestellt.

2 „Gefällt mir“

Vielleicht möchten Sie Aufträge zur Verarbeitung des Imports planen.

3 „Gefällt mir“

Am Ende habe ich es neu geschrieben, um den Import in einem geplanten Job zu handhaben, was sich als viel besser herausstellte.

2 „Gefällt mir“

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.