2013-03-01 1 views
0

У меня есть сервер node.js, который принимает запросы с веб-страницы. Получив запрос «СТАРТ», я хочу, чтобы у вас был возможность запускать таймер, выполняющий задачу в фоновом режиме каждые n секунд бесконечно. Это выполнимо? и что было бы хорошим примером? Простой psudo-код, как показано ниже:Возможно ли создать несколько таймеров в node.js для нескольких независимых задач?

app.get("myindependenttasks/starttask/:userid"){ 
    //start a simple timer to handle to userid 
    //continue to run the timers endlessly while 
    //while this call returns a "Task running" status 
    //to the user. 
    //Other users should be able to run their own tasks. 
} 

Есть ли какие-либо недостатки, если количество запросов пользователей около 1000 погонных задач.

+1

таймеры не выполняются в фоновом режиме, они просто откладываются до тех пор, пока событие не закончится, когда наступит время, и в этот момент он блокируется. Можете ли вы описать, какую работу нужно выполнить? – Chad

+0

Задача состоит в вызове другого веб-сервиса (REST-вызовы) в фоновом режиме для чтения данных и записи обновлений. –

+0

Звучит асинхронно, просто звоните; если они асинхронны, вы должны быть в порядке. Покажите мне несколько кодов. – Chad

ответ

1

Вы можете использовать setInterval для этого (http://nodejs.org/api/timers.html), но я бы не решался сделать это за 1000 из них.

Вместо этого вы должны запустить один setInterval и запустить задачи для всех подключенных пользователей в этой задаче.

Итак, когда пользователь нажимает «myindependenttasks/starttask /: userid», он добавляется в список пользователей для обработки, и в вашей периодической задаче вы просматриваете этот список один за другим.

Смежные вопросы