Web リクエストが来るたびに、node.js サーバーの fifo に書き込もうとしています。fifo をタスク キューとして使用しているため、別のプログラムがそこから読み取り、時間のかかる作業を実行できます。
これまでのところ、次のような node.js サーバーのコードがあります。
fs = require('fs');
...
var fifoPath = '/tmp/myfifo';
var input = 'some input';
fs.open(fifoPath, 'wx', 0644, function(error, fd) {
if (error) {
if (fd) {
fs.close(fd);
}
console.log('Error opening fifo: ' + error);
return;
}
fs.write(fd, input, 0, input.length, null, function(error, written, buffer) {
if (fd) {
fs.close(fd);
}
if (error) {
console.log('Error writing to fifo: ' + error);
} else {
if (written == input.length) {
console.log('Input has been written successfully!';
} else {
console.log('Error: Only wrote ' + written + ' out of ' + input.length + ' bytes to fifo.');
}
}
});
});
このコードを実行すると、次のように出力されます。
Error: EEXIST, open '/tmp/myfifo'
私はこれを間違ってやっていますか?
注: フラグを使用fs.open(...)
し'wx'
て、入力が fifo に順次書き込まれるようにしています。たとえば、10 個のリクエストが同時に入ってきた場合など、すべてが同時に fifo に書き込まれるわけではありません。