2014-04-23 4 views
0

기본적으로 사용자가 인터넷 (예 : youtube)의 모든 비디오를 다운로드하고 처리 할 수있게 해주는 웹 응용 프로그램에 SailsJS를 사용하고 있습니다. 사용자가 비디오에 대한 링크를 입력하면 세일 앱이 해당 비디오를 다운로드 한 다음 쉘 스크립트 (OpenCV 처리로 다른 프레임을 찾습니다)를 사용하여 다운로드 한 비디오를 처리하기 시작합니다.페이지에서 벗어난 후 하위 프로세스에 연결

이 프로세스는 완료하는 데 시간이 오래 걸리고 사용자는 페이지에서 벗어나 원하는대로 작업 할 수 있습니다. 이제이 페이지를 방문하여 진행 상황을 확인하려면 이전에이 비디오 파일에 대해 생성 된 하위 프로세스에 연결할 수 있어야합니다.

1) 작업 서버를 구현하고 연결할 사용자가 페이지를 탐색 할 때마다 콜백 이벤트를 받기 시작하고 기반으로 진행 상황을 보여 gearman 사용 :

나는 두 가지 솔루션으로 올라와있다 그들. 나는 기어맨을 처음 사용할 것이다.

2) 어떤 식 으로든 세션/db에 하위 프로세스의 processID를 저장 한 다음 ps-node을 사용하여 프로세스를 찾는 데 사용합니다.

더 좋은 접근 방법은 무엇입니까 (문제가 없다고 생각하는 경우)? 아니면 내가 모르는 다른 해결책이 있습니까? 올바른 방향으로 향한 어떤 포인터라도 감사 할 것입니다.

답변

0

두 번째 옵션부터 살펴 보겠습니다. 사용하지 마십시오. 간단히 말해서 사이트 사용자가 서버에서 실행중인 프로세스의 수를 제어 할 수 있기 때문입니다.

숫자 하나가 더 좋지만 별도의 작업 서버를 사용하는 것이 나에게 잔인한 비트처럼 보일 수 있습니다. (물론 계획의 규모를 완전히 알지 못한다고 인정해야합니다.)

결론 나는 메시지/작업 대기열 (kue)을 사용하여 DB 또는 (선호) Redis (또는 사용중인 모든 캐시)에 진행 상황을 저장합니다.

+0

Kue가 완벽하게 작동합니다. :) –