Il y a quelque temps, j’ai créé un plugin Discourse qui appelle une méthode de contrôleur via ajax et renvoie ensuite le résultat. Cette requête particulière peut prendre quelques minutes, et cela fonctionnait bien.
Mais maintenant, après un long moment, j’ai essayé le plugin dans la version actuelle de Discourse et je rencontre un problème où la requête est abandonnée après 1 minute.
Et le message d’erreur que je vois après 1 minute est :
Erreur du proxy Discourse Ember CLI
FetchError : la requête vers http://127.0.0.1:3000/my-plugin/import a échoué, raison : 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)
Ce que j’essaie de comprendre, c’est pourquoi ce comportement a pu changer au cours de la dernière année ? Et s’il existe une option pour modifier le réglage du délai d’attente.
Je ne pense pas qu’il y ait eu de changement récent ici. Le backend de Discourse est configuré pour expirer les requêtes après 60 secondes en développement, ou 30 secondes en production
Il semble que cela soit configurable en développement via la variable d’environnement UNICORN_TIMEOUT. Mais la production est codée en dur à 30 secondes.