Я разворачиваю дочерний процесс в серверном приложении, которое выполняет некоторую повторяющуюся работу с процессором, значение статуса пересылается на Redis на каждой итерации.Данные Redis не отображаются до тех пор, пока Node.js child_process.fork() не завершится
Проблема заключается в том, что значение статуса не отображается в 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()
})()
Исправлено простым использованием обратных вызовов команд Redis. Просто я увидел ваше предложение использовать асинхронную библиотеку, я не думаю, что мне это нужно в моей ситуации. В любом случае спасибо! –