Requisição AJAX expira após 1 minuto

Há um tempo criei um plugin do Discourse que chama um método de controlador via ajax e retorna o resultado. Essa solicitação específica pode levar alguns minutos para ser executada, e isso estava funcionando bem.
Mas agora, depois de um longo tempo, tentei o plugin na versão atual do Discourse e estou encontrando um problema onde a solicitação é abortada após 1 minuto.

Então, o código se parece com isto:

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

E a mensagem de erro que vejo após 1 minuto é:

Erro no Proxy do Discourse Ember CLI

FetchError: a solicitação para http://127.0.0.1:3000/my-plugin/import falhou, 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)

O que estou tentando entender é por que esse comportamento pode ter mudado no último ano? E se há alguma opção para alterar a configuração de tempo limite.

Não creio que tenha havido nenhuma alteração recente aqui. O backend do Discourse está configurado para expirar requisições após 60 segundos em desenvolvimento, ou 30 segundos em produção

Parece que isso é configurável em desenvolvimento através da variável de ambiente UNICORN_TIMEOUT. Mas a produção é codificada em 30 segundos.

2 curtidas

Talvez você queira agendar trabalhos para processar a importação.

3 curtidas

No final, eu reescrevi para lidar com a importação em um trabalho agendado, o que acabou sendo muito melhor.

2 curtidas

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