节点生成子进程在 aws 节点 10 lambda 中执行子进程后不执行命令
Node spawn child process doesn't execute the command after exec child process in aws node 10 lambda
我正在尝试 运行 2 个子进程,但其中一个似乎被阻止并最终使节点 lambda 超时。
环境:
- AWS 节点 10 lambda 运行在 docker 容器中。
- 通过 /opt/bin 目录中的 lambda 层访问 ffmpeg 和 ffprobe。
child_process.exec
我正在 运行ning ffprobe child_process.exec 中获取音频文件的文件格式。我正在使用 exec,因为输出是一个小 json 响应(不应该消耗太多内存)。
child_process.spawn
在我 运行 ffmpeg 使用 child_process.spawn.
将音频文件转换为 mp3 后不久
问题是 FFMPEG child_process.spawn 命令不会在 ffprobe 之后 运行(即使 ffprobe 成功完成)。如果我不 运行 ffprobe 命令 FFMPEG 命令 运行 就完美了。
这让我相信这是我处理节点中子进程的方式的问题。
child_process.exec ffprobe 命令是否可能仍然 运行ning/ 阻止来自 运行ning 的新 ffmpeg (child_process.spawn) 命令- 如果是这样,我该如何检查?
当我访问 docker 容器中的 运行ning 进程时,只有新的 ffmpeg 命令似乎是 运行ning,尽管它不消耗内存并且只是挂起 - 似乎在做没有什么。我什至尝试从 docker cli 启动 ffmpeg 命令(避免使用节点环境),这工作正常并且 运行s 符合预期。
所以看来我的问题并不是真的在 exec 和 spawn 之间,我不是 100% 确定,但我认为可能是子进程保留在容器中并在下一次调用 lambda 时恢复。
更改为 child_process.spawnSync 等待子进程退出并保持清洁,自从使用它以来我还没有遇到过这个问题。
如果有人能提供更详尽的解释,我们将不胜感激。
我正在尝试 运行 2 个子进程,但其中一个似乎被阻止并最终使节点 lambda 超时。
环境:
- AWS 节点 10 lambda 运行在 docker 容器中。
- 通过 /opt/bin 目录中的 lambda 层访问 ffmpeg 和 ffprobe。
child_process.exec 我正在 运行ning ffprobe child_process.exec 中获取音频文件的文件格式。我正在使用 exec,因为输出是一个小 json 响应(不应该消耗太多内存)。
child_process.spawn 在我 运行 ffmpeg 使用 child_process.spawn.
将音频文件转换为 mp3 后不久问题是 FFMPEG child_process.spawn 命令不会在 ffprobe 之后 运行(即使 ffprobe 成功完成)。如果我不 运行 ffprobe 命令 FFMPEG 命令 运行 就完美了。
这让我相信这是我处理节点中子进程的方式的问题。
child_process.exec ffprobe 命令是否可能仍然 运行ning/ 阻止来自 运行ning 的新 ffmpeg (child_process.spawn) 命令- 如果是这样,我该如何检查?
当我访问 docker 容器中的 运行ning 进程时,只有新的 ffmpeg 命令似乎是 运行ning,尽管它不消耗内存并且只是挂起 - 似乎在做没有什么。我什至尝试从 docker cli 启动 ffmpeg 命令(避免使用节点环境),这工作正常并且 运行s 符合预期。
所以看来我的问题并不是真的在 exec 和 spawn 之间,我不是 100% 确定,但我认为可能是子进程保留在容器中并在下一次调用 lambda 时恢复。
更改为 child_process.spawnSync 等待子进程退出并保持清洁,自从使用它以来我还没有遇到过这个问题。
如果有人能提供更详尽的解释,我们将不胜感激。