Estoy tratando de ejecutar un comando python desde Node.js v12.22.1 en una aplicación web. Este es el método que se llama en uno de mis controladores:
async start ({request,response,params}) { Log.create(request.request.headers.user,request.url()) const { spawn } = require('child_process'); const command = spawn('python',[process.env.BUS_PATH+'inventario/SystemDManager.py', params.name, "start"]); var responseData = "teste"; command.stdout.setEncoding('utf-8'); command.stdout.on('data', function (data){ responseData += data.toString(); }); command.stderr.on('data', function (data){ responseData += data.toString(); }); command.stdout.on('end',function(data){ console.log(responseData); }); return responseData }Las variables están instanciadas correctamente, ya las imprimí:
process.env.BUS_PATH = /home/ubuntu/ params.name = wittyPara que el comando de solicitud sea:
python /home/ubuntu/inventario/SystemDManager.py witty startEste comando funciona perfectamente cuando lo escribo directamente en la consola de shell. Sin embargo, no sucede nada cuando se ejecuta a través del spawn. Además, cuando cambio los argumentos de generación a:
spawn('cp',[process.env.BUS_PATH+'inventario/SystemDManager.py', "dummy.txt"]);Funciona bien, hace que el archivo se copie... Note que mi variable responseData termina con "teste", como si nada hubiera pasado. Incluso he intentado cambiar "python" a "/usr/bin/python", pero todo sigue igual.
¿Alguien tiene una pista de lo que está pasando mal que el comando python no se está ejecutando?