(对不起,我的英语不好),我正在制作一个魔镜,我正在开发一个模块。我用python做了一个脚本,我需要打印脚本的shell,因为它是一个“while true”。为此,我需要做一个子进程,但我的问题是:当我的脚本运行时,在日志控制台或镜像中打印任何内容。
node_helper.js的文件--->
var NodeHelper = require("node_helper")
var { spawn } = require("child_process")
var self = this
async function aexec() {
const task = spawn('python3', ['/Fotos/reconeixementfacial.py'])
task.stdout.on('data', (data) => {
console.log(`${data}`)
})
task.stdout.on('exit', (data) => {
console.log("exit")
})
task.stdout.on('error', (data) => {
console.log(`${error}`)
})
task.unref()
}
module.exports = NodeHelper.create({
start: function() {
aexec()
},
socketNotificationReceived: function(notification, payload) {
console.log(notification)
}
})
非常感谢你给我时间!!注意:如果我的python脚本没有“while true”(只有一个序列),那么它可以工作,只有在我的脚本没有定义的情况下才可以工作
Ofc我不知道您是如何使用导出的模块的,但我假设您只是运行start函数来阻止您的进程,但正如文档所说的,spawn
是异步的,不会阻止循环,而且您添加了async函数,这使它成为了一个承诺。
因此,如果您希望它是异步的,您必须正确地处理当前模块和调用它的所有其他模块中的承诺:
var NodeHelper = require("node_helper")
var { spawn } = require("child_process")
var self = this
function aexec() {
return new Promise(function(resolve, reject) {
const task = spawn('python3', ['/Fotos/reconeixementfacial.py'])
task.stdout.on('data', (data) => {
console.log(`${data}`)
})
task.stdout.on('exit', (data) => {
console.log("exit")
task.unref()
resolve()
})
task.stdout.on('error', (data) => {
console.log(`${error}`)
task.unref()
reject()
})
});
}
module.exports = NodeHelper.create({
start: function() {
aexec().then(() => console.log("Done"))
},
socketNotificationReceived: function(notification, payload) {
console.log(notification)
}
})
或者简单地使用生成子进程的阻止版本:https://nodejs.org/api/child_process.html#child_process_child_process_spawnsync_command_args_options,应该简单得多
问题内容: 我想从Go执行perforce命令行“ p4”以执行登录工作。“ p4登录”要求用户输入密码。 如何在Go中运行需要用户输入的程序? 以下代码不起作用。 问题答案: 从os / exec.Command文档: 在执行命令之前,设置命令的Stdin字段。
我想知道在不运行require的情况下,节点的require将解析到什么路径。 例如 在内部node.js将查看它的PATH,弄清楚它是一个目录、一个js文件、一个json文件等。,然后加载文件。 有没有办法在不实际加载模块的情况下只处理完整解析的路径? 我正在寻找的输出是这样的 重要的部分是. js扩展名,因为节点必须完全解析路径。 注意:无法解决此问题。如果some_module实际上是一个包
问题内容: 我是新手,所以请保持温柔。 因此,我已经在某些代码中使用互斥锁了几周了。我了解其背后的概念:锁定对特定资源的访问权限,与之交互(读或写),然后为其他人再次解锁。 我使用的互斥锁代码主要是复制粘贴调整。该代码可以运行,但是我仍在努力解决其内部问题。到目前为止,我一直在结构中使用互斥锁来锁定该结构。今天,我发现了这个例子,这使我完全不清楚互斥锁实际上是在锁定什么。以下是一段示例代码: 让我
使用rendered并不能保证 dispatchAction成功执行。 换为 setTimeout(() => {}, 1000); 才行。 如何才能确认什么时候满足执行 dispatchAction的条件呢?
我从一些教程网站上了解到,如果我们想将Cucumber集成到我们的SeleniumJava项目中,我们需要下载所有这些jar文件并将其添加到项目中: cucumber核 cucumber-爪哇 cucumber-jUnit cucumber-jvm-deps cucumber-报告 小cucumber jUnit mockito-所有 cobertura 我的问题,有没有官网链接告诉我们需要什么j
当我们讨论使用Executors服务处理异步事件时,为什么创建一个新的固定线程池涉及到使用LinkedBlockingQueue?到达的事件完全不依赖,所以为什么要使用队列,因为使用者线程仍然会涉及take Lock的争用?为什么Executors类没有一些混合数据结构(例如并发映射实现),在大多数情况下不需要带锁?