Фоновая обработка Node.js - PullRequest
2 голосов
/ 30 января 2012

Я новичок в node.js, поэтому, пожалуйста, простите, что, вероятно, является наивным вопросом :) Мой вопрос: каков наилучший способ настроить работу без пользовательского интерфейса, написанную на узле?Созданная мною задача используется для обхода некоторого веб-контента на основе очереди Azure (сообщение очереди сообщает заданию, какой контент сканировать).Все примеры, которые я вижу вокруг узла, в большей степени основаны на пользовательском интерфейсе и запросах, с использованием http.createServer и прослушиванием определенного порта.Хотя я могу заставить эту работу работать, это кажется неправильным, но мне просто нужно создать какой-то цикл javascript setInterval (или что-то подобное), который продолжает смотреть на мою очередь.Будем очень благодарны за любые предложения или примеры, которые подтолкнут меня в правильном направлении.

Крис

1 Ответ

4 голосов
/ 30 января 2012

Я не совсем понимаю, что вы пытаетесь сделать, но узел вообще не зависит от стека http. Если вы просто хотите запустить узел и заставить его что-то обрабатывать, это довольно просто. Ваш app.js может быть таким простым:

var queueWorker = require('worker');

var startWorker = function() {
    if(queueWorker.hasWork()) {
        queueWorker.processQueue(startWorker);
    } else {
        setTimeout(startWorker, 1000);
    }
};

startWorker();

Что он делает, так это устанавливает рабочий цикл, в котором каждую секунду он будет проверять, есть ли новая работа, и начинается ли ее обработка. По завершении обработки работы вернитесь к 1-секундному интервалу проверки новой работы.

Вам потребуется создать рабочий модуль в качестве проверки hasWork, а обработка указанной работы зависит от приложения.

Если вы хотите получить немного больше фантазии, processQueue может породить новый процесс узла, который отвечает только за фактическую обработку работы, тогда вы можете отслеживать количество порождаемых рабочих по сравнению с ограничениями ЦП и иметь относительно простой узел приложение, которое обрабатывает данные в нескольких потоках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...