Desidero aggiungere alcune utilità di amministrazione a una piccola app Web, ad esempio "Database di backup". L'utente farà clic su un pulsante e la risposta HTTP verrà restituita immediatamente, sebbene il processo potenzialmente di lunga durata sia stato avviato in background.Comportamento "spawn a thread" in node.js
In Java questo probabilmente verrà implementato creando un thread indipendente, in Scala utilizzando un attore. Ma qual è un idioma appropriato in node.js? (codice snippet apprezzato)
Ora sto rileggendo i documenti, questo sembra davvero un problema 101 nodo ma è più o meno dove sono su questo ... comunque, per chiarire questo è lo scenario di base:
function onRequest(request, response) {
doSomething();
response.writeHead(202, headers);
response.end("doing something");
}
function doSomething(){
// long-running operation
}
Desidero che la risposta venga restituita immediatamente, lasciando doSomething() in esecuzione in background.
Ok, dato il modello single-thread del nodo che non sembra possibile senza generare un altro ChildProcess a livello di sistema operativo. Il mio fraintendimento
Nel mio codice, quello di cui ho bisogno per il backup è principalmente basato sull'I/O, quindi il nodo dovrebbe gestirlo in modo asincrono. Quello che penso di fare è spostare il doSomething dopo il response.end, vedere come si comporta.
Confido che tu abbia sfogliato la documentazione. http://nodejs.org/docs/v0.4.7/api/index.html Penso che dipenda dalla natura del tuo processo, ma dai un'occhiata a Child Process. – supertopi
Grazie. Sembra che il mio problema fosse radicato in un profondo fraintendimento su come funziona il nodo :) Child Process era quello che avevo in mente, anche se non la soluzione più semplice, vedi la risposta di Joe in basso. – danja