Я хочу добавить некоторые утилит администратора к небольшому веб-приложению, например «Резервная база данных». Пользователь нажмет на кнопку, и ответ HTTP немедленно вернется, хотя потенциально длительный процесс был запущен в фоновом режиме.«Появление потока» в стиле node.js
В Java это, вероятно, будет реализовано путем нереста независимого потока в Scala с помощью Актера. Но что такое подходящая идиома в node.js? (код снипета оценен)
Теперь я перечитываю документы, это действительно вопрос узла 101, но это в значительной степени, где я нахожусь ... во всяком случае, чтобы прояснить, что это основной сценарий:
function onRequest(request, response) {
doSomething();
response.writeHead(202, headers);
response.end("doing something");
}
function doSomething(){
// long-running operation
}
Я хочу, чтобы ответ немедленно вернулся, оставив doSomething() бегущим в фоновом режиме.
Хорошо, учитывая однопотоковую модель узла, которая не представляется возможной, не порождая другой дочерний процесс уровня ОС. Мое недоразумение.
В моем коде, что мне нужно для резервного копирования, в основном основано на I/O, поэтому узел должен обрабатывать это с помощью приятного асинхронного способа. Я думаю, что я сделаю, это переместить doSomething после response.end, посмотреть, как это происходит.
Надеюсь, вы просмотрели документацию. http://nodejs.org/docs/v0.4.7/api/index.html Я думаю, что это зависит от характера вашего процесса, но посмотрите на Child Process. – supertopi
Спасибо. Кажется, моя проблема была укоренена в глубоком непонимании того, как работает узел :). Детский процесс был тем, что я имел в виду, хотя и не самым простым решением, см. Ответ Джо ниже. – danja