La richiesta AJAX va in timeout dopo 1 minuto

Un po’ di tempo fa ho creato un plugin Discourse che chiama un metodo controller tramite ajax e poi restituisce il risultato. Questa particolare richiesta può richiedere alcuni minuti e funzionava bene.
Ma ora, dopo molto tempo, ho provato il plugin nella versione corrente di Discourse e mi sono imbattuto in un problema in cui la richiesta viene interrotta dopo 1 minuto.

Quindi il codice è simile a questo:

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

E il messaggio di errore che vedo dopo 1 minuto è:

Errore proxy Discourse Ember CLI

FetchError: la richiesta a http://127.0.0.1:3000/my-plugin/import è fallita, motivo: 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)

Quello che sto cercando di capire è perché questo comportamento potrebbe essere cambiato nell’ultimo anno? E se c’è qualche opzione per modificare l’impostazione del timeout.

Non credo ci siano state modifiche recenti qui. Il backend di Discourse è configurato per interrompere le richieste dopo 60 secondi in fase di sviluppo o 30 secondi in produzione

Sembra che questo sia configurabile in fase di sviluppo tramite la variabile d’ambiente UNICORN_TIMEOUT. Ma la produzione è codificata a 30 secondi.

2 Mi Piace

Forse si desidera pianificare processi per l’importazione.

3 Mi Piace

Alla fine l’ho riscritto per gestire l’importazione in un processo pianificato, che si è rivelato molto migliore.

2 Mi Piace

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