gpt4 book ai didi

node.js - 在 Node.js child_process.fork() 完成之前,Redis 数据不会显示

转载 作者:可可西里 更新时间:2023-11-01 11:38:16 25 4
gpt4 key购买 nike

我在服务器应用程序中 fork 一个子进程,它执行一些重复的 CPU 绑定(bind)工作,每次迭代都会将状态值推送到 Redis。

问题是在子进程完成之前状态值不会显示在 Redis 上,所以我只能获取最后一个状态值。

我正在客户端应用程序中轮询状态值。

我正在使用 node_redis 作为 Redis 客户端。

我也从 redis-cli 验证了子进程完成之前不存在状态值。

父级(服务器应用):

child_process.fork('child.js')

子(服务器应用):

for (...) {
//CPU-bound work
redisClient.hset(key, field, value)
}

客户端应用:

(function poll () {
//wait
redisClient.hget(key, field)
poll()
})()

最佳答案

尝试将您的子代码更改为

async.eachSeries(data, function(element, next) {
//do cpu bound work on element
redisClient.hset(key, field, value, next); // wait for callback before starting next work
}, function(err) {
console.log('done');
});

如果您不等待 hset 命令回调,则 for 循环将继续运行,不会有机会更新状态。您可能需要使用更好的 async .* 满足您需求的方法。

关于node.js - 在 Node.js child_process.fork() 完成之前,Redis 数据不会显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28173112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com