在child_process中并行运行同一命令多次

时间:2019-05-27 15:33:47

标签: javascript node.js child-process

我当前面临child_process问题,我找不到出路。

我想使用child_process.spawn()或child_process.exec()在服务器上运行一个简单命令:

let child = spawn('soffice', ['--headless', '--convert-to', 'pdf:writer_pdf_Export', `${UPLOAD_DIR}/${file.bucket}/${file.filename}`, "--outdir", `${UPLOAD_DIR}/${file.bucket}`], { detached: true })

这项任务可以由各种不同的用户每分钟触发多次。

确定,但是应该怎么办?

这将获取任何类型的Office文件(Word,Excel),并将其转换为同一文件夹中的pdf。

一次只能处理一个文件

当我在第一个文件结束之前再次触发它时,就会发生问题,例如:

// File 1 Will be converted fine
let child = spawn('soffice', ['--headless', '--convert-to', 'pdf:writer_pdf_Export', `${UPLOAD_DIR}/${file.bucket}/${file.filename}`, "--outdir", `${UPLOAD_DIR}/${file.bucket}`], { detached: true })

// File 2 will not be converted
let child = spawn('soffice', ['--headless', '--convert-to', 'pdf:writer_pdf_Export', `${UPLOAD_DIR}/${file.bucket}/${file.filename}`, "--outdir", `${UPLOAD_DIR}/${file.bucket}`], { detached: true })

我已经调试了生成器以获取所有输出(stdout,stderr),第一个进程运行良好,但是第二个进程未输出任何内容,但是以代码0(成功)关闭。

我的第一印象是第一个进程也关闭了第二个进程,就好像它们在“冲突”(或者对于CPU只是同一进程。)。

简而言之,我需要一种方法来生成命令的两个单独的实例,以使它们并行且彼此独立地工作。

在此先感谢您的帮助。

0 个答案:

没有答案