2012-08-09 5 views
7

node.js와 협력 중이며 ./calculate와 같은 복잡한 요청을 계산할 새 프로세스를 시작하고 해당 프로세스가 계속 진행 되길 원할 때도 요청합니다. 그것을 호출 한 스크립트가 완료되었습니다. 가능합니까?nodejs에서 새 프로세스 시작

감사합니다.

답변

3

당신은 기본적으로 제공되는 자식 프로세스의 시설을 사용할 수 있습니다 http://nodejs.org/api/child_process.html

을 그리고 부모 프로세스가 죽었을 경우에도 살아 생성 된 프로세스를 유지 명령 "nohup을"유닉스를 사용합니다.

+1

성능에 대해 말하면 좋은 결정입니까? 감사합니다. – Mario

+0

자식 프로세스 작업 결과가 생성 된 동일한 연결에서 반환되도록 찾고 있습니까? – Roman

+1

당신은 그것에 대해 똑똑하고 자식 작업자 풀을 만들고 데이터베이스의 대기열을 통해 자식 작업자와 통신 할 수 있습니다 (예 : Redis와 같은 것을 사용). 이것은 매우 확장 성이 뛰어나고 복원력이 뛰어납니다. 유용한 링크가 몇 개 있습니다. http://stackoverflow.com/questions/5630208/nodejs-child-processes-exec-can-not-return-nohup-command http://stackoverflow.com/questions/ 4762016/node-js-workers-background-processes – Roman

3

다른 접근법이 있습니다.

https://github.com/pgriess/node-webworker을 사용할 수 있습니다.

또는 훨씬 좋음 http://nodejs.org/docs/latest/api/cluster.html#cluster_cluster.

이러한 솔루션은 Node에서 하위 프로세스를 수행하려는 경우 새 Node 프로세스를 생성하고 결과 (http://nodejs.org/api/all.html#all_child_process_spawn_command_args_options)가 아니라 노드를 기다릴 수 있습니다. -webworker는 그 해결책을 감싸는 래퍼이며 훨씬 더 깨끗합니다.

+0

그러나 나는 전혀 기다리지 않습니다. 하위 프로세스를 호출하고 싶습니다. 내 말은, 메인 스크립트가 죽거나 http 서버가 끝나면 서브 프로세스가 계속되기를 원한다는 뜻입니다. 고맙습니다. – Mario

1

마지막 코멘트를 읽은 후에 나는 당신이하고 싶은 것을 더 잘 이해합니다.

하위 프로세스가 아닌 프로세스를 생성하려고합니다. 가장 좋은 방법은이를 실행하는 데 일종의 악마를 사용하는 것입니다.

은 영원히 보라 :
https://github.com/nodejitsu/forever
https://github.com/nodejitsu/forever-monitor

이것은 당신을위한 완벽한 도구가 될 수 있습니다. 나는 그것을 결코 사용한 적이 없다 프로그래밍 방식으로, 그냥 cli. 그러나 이것은 내가 조사 할 것입니다.

+0

정말 고마워요.하지만 코만도의 노하우가 저에게 유익하다는 것을 알게되었습니다.) – Mario

+1

때로는 단순함이 충분합니다. D – 3on