Usar clúster en un módulo de nodo

ACTUALIZAR: Incluso si este escenario particular no es realista, según los comentarios, todavía estoy interesado en cómo se podría escribir un módulo que haga uso de la agrupación sin volver a ejecutar el proceso principal cada vez.

Estoy tratando de escribir un módulo Node.js llamadomass-request que acelera un gran número de solicitudes HTTP al distribuirlas a procesos secundarios.

Mi esperanza es que, por fuera, funcione así.

var mr = require("mass-request"),
    scraper = mr();

for (var i = 0; i < my_urls_to_visit.length; i += 1) {
    scraper.add(my_urls_to_visit[i], function(resp) {
        // do something with response
    }
}

Para comenzar, armé un esqueleto para el módulo de solicitud masiva.

var cluster = require("cluster"),
    numCPUs = require("os").cpus().length;

module.exports = function() {
    console.log("hello from mass-request!");
    if (cluster.isMaster) {
        for (var i = 0; i < numCPUs; i += 1) {
            var worker = cluster.fork();             
        }

        return {
            add: function(url, cb) {}       
        }       
    } else {
        console.log("worker " + process.pid + " is born!");
    }  
}

Luego lo pruebo así en un script de prueba:

var m = mr();
console.log("hello from test.js!", m);

Esperaba ver "hola desde la solicitud masiva!" registrado cuatro veces (como de hecho lo es). Para mi sorpresa, también veo "hola desde test.js" cuatro veces. Claramente no entiendo cómocluster.fork() trabajos. ¿Se está volviendo a ejecutar todo el proceso, no solo la función que lo llama la primera vez?

Si es así, ¿cómo se hace uso de la agrupación en un módulo sin molestar a la persona que usa ese módulo con una lógica multiproceso desordenada?

Respuestas a la pregunta(2)

Su respuesta a la pregunta