안녕
일부 초기 사용자 입력 후에 루비에 대한 c 확장을 통해 멀티 스레딩을 사용하는 무거운 계산이 수행되는 레일즈 웹 사이트를 설정하려고합니다. 이 계산은 거의 모든 CPU 시간 (메모리도)을 소모하므로 한 번에 하나 이상의 계산이 실행되지 않아야합니다. 또한 나는 (비동기) 배경 작업 (예 : 지연된 작업)을 사용할 수 없습니다. 레일스는 계산 결과를 표시해야하고 사이트는 자바 스크립트없이 작동해야합니다.
그래서 모든 레일 인스턴스가 계산 요청을 대기열에 넣고 응답 (대기열이 가득 찼을 경우 오류 메시지 일 수 있음), 동기 작업 관리자 종류를 기다려야하는 별도의 프로세스가 필요하다고 가정합니다.Ruby/Rails 동기 작업 관리자
보석/플러그인과 같은 기능이 있는지 누가 알 수 있습니까? (nanite은 나에게 아주 멋있어 보이지만, 비동기식 인 것처럼 보이기 때문에 레일스 인스턴스는 계산이 끝났을 때 알 수 없습니다.)
또 다른 아이디어는 분산 루비 (drb)를 사용하여 직접 작성하는 것입니다. 그러나 이미 존재한다면 바퀴를 다시 발명하는 이유는 무엇입니까?
어떤 도움도 받으실 수 있습니다!
편집 : 왜냐하면 나는 비동기 적으로이 작업을 수행 할 수 있다고 생각하기 때문에 resque을 시도 할 것입니다. 당신이 별도의 프로세스가있는 경우
그 metarefresh 일이 가능하지만 계산을 끝내지 않은 경우 수동으로 페이지를 다시로드하는 사용자가 내 눈을 너무 userfriendly되지 않습니다. atm 나는 동시에 많은 요청을 기대하지 않으므로 웹 스레드를 차단하는 것이 큰 문제가되지 않습니다. 하지만 당신이 옳아, 그걸하는 좋은 방법이 아니야. – user573335
처음 새로 고침 후 작업이 완료되지 않은 경우 메타 새로 고침을 원하는 횟수만큼 수행 할 수 있습니다. 새로 고침 한 페이지를 표시하고 작업 완료 후 마지막 페이지 만 표시하십시오. – zaius
글쎄, 나는 그것에 대해 조금 주저하지만, 더 많이 생각하면할수록 적어도 장기적으로는 비동기 적으로 더 나은 해결책이 될 것 같다. 대기열에 너무 많은 작업이있을 경우 웹 스레드에서 예상 작업 시간 (웹 스레드에서)을 요청할 수 있고 웹 스레드에 오류 메시지를 반환 할 수있는 작업 큐가 있습니까? – user573335