0
일부 CPU 반복 작업을 수행하는 서버 응용 프로그램에서 하위 프로세스를 포크 할 때마다 모든 반복에서 상태 값이 Redis로 푸시됩니다.Node.js child_process.fork()가 완료 될 때까지 Redis 데이터가 표시되지 않습니다.
문제는 상태 값이 하위 프로세스가 완료 될 때까지 Redis에 표시되지 않기 때문에 마지막 상태 값만 가져올 수 있다는 것입니다.
클라이언트 앱에서 상태 값을 폴링합니다.
나는 Redis 클라이언트로 node_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()
})()
단순히 Redis 명령의 콜백을 사용하여 해결되었습니다. 비동기 라이브러리 사용에 대한 귀하의 제안을 보았을 때, 저는 제 상황에서 그렇게 생각하지 않습니다. 어쨌든 고마워! –