La solicitud AJAX expira después de 1 minuto

Hace un tiempo creé un plugin de Discourse que llama a un método de controlador a través de ajax y luego devuelve el resultado. Esta solicitud en particular puede tardar unos minutos y funcionaba bien.
Pero ahora, después de mucho tiempo, probé el plugin en la versión actual de Discourse y me encuentro con un problema en el que la solicitud se interrumpe después de 1 minuto.

El código se ve así:

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

Y el mensaje de error que veo después de 1 minuto es:

Error del proxy de Discourse Ember CLI

FetchError: la solicitud a http://127.0.0.1:3000/my-plugin/import falló, razón: 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)

Lo que intento entender es por qué este comportamiento podría haber cambiado en el último año. Y si existe alguna opción para cambiar la configuración del tiempo de espera.

No creo que haya habido ningún cambio reciente aquí. El backend de Discourse está configurado para agotar el tiempo de espera de las solicitudes después de 60 segundos en desarrollo, o 30 segundos en producción.

Parece que esto se puede configurar en desarrollo a través de la variable de entorno UNICORN_TIMEOUT. Pero la producción está codificada a 30 segundos.

2 Me gusta

Quizás quieras programar trabajos para procesar la importación.

3 Me gusta

Al final lo reescribí para manejar la importación en un trabajo programado, lo que resultó ser mucho mejor.

2 Me gusta

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