2012-02-07 2 views
0

그래서이 애플리케이션을 만드는 중일 때 피드를 가져와야하고 xml 파서가 시간이 걸리기 때문에 항상 heroku에서 시간 초과됩니다. 따라서, 페이지가로드 될 때마다 Ajax를 통해 비동기로드로 변경됩니다. Ajax 호출에서 여전히 H12 오류가 발생합니다. 이제 Resque를 사용하여 백그라운드에서 작업을 수행 할 생각입니다. 나는 아무런 문제가 없지만 AJAX를 통해 처리 된 피드를 html 페이지로 가져올 수 있도록 작업이 완료되었음을 어떻게 알 수 있습니까?heroku에 대한 배경 작업 웹에서 어떻게 완료되었는지 알 수 있습니까?

내 질문에 분명하지 않은 경우 웹 레이어가 작업이 완료되었음을 알 수 있으며 페이지 (예 : 자바 스크립트의 onComplete)에 페이지의 콘텐츠를 채우는 신호가 있어야합니다.

+1

하지 특정 시작할 수 있도록,하지만 당신은 내가 [장기 실행 웹 프로세스 서버로 DRB를 사용]에 만든 작성자에 관심이있을 수 있습니다 (HTTP ://phrogz.net/drb-server-for-long-running-web-processes). AJAX를 사용하여 다른 스레드에서 실행중인 프로세스의 결과를 폴링하고 리턴하는 방법을 보여줍니다. – Phrogz

답변

4

은 자바 스크립트가 AJAX를 사용할 수 있습니다

  • 이 '아직'또는 결과로 응답 할 수있는 결과와 서버를 요청하는 서버를 폴링 할 수있는 방법은 여러 가지가 있습니다. 당신은 결과를 얻을 때까지 계속 묻습니다.

  • 당신은 저거넛 클라이언트에 서버 푸시를 할 수 있습니다 (http://juggernaut.rubyforge.org/)를 살펴 수

  • 웹 소켓은 문제를 해결하기 위해 HTML5의 방법입니다. 이 몇 가지 보석의 주위에 당신에게 Heroku에 Best Ruby on Rails WebSocket tool

1

여기에 아키텍처 문제가 있습니다. H12를 사용하는 이유는 사용자가 30 초 이상 앉아 있지 않기 때문입니다.

장기 실행 작업을 Resque 대기열로 이동하면 프런트 엔드 웹 프로세스와의 연결이 끊어집니다. 프로세스 분리로 인해 통신 할 수있는 방법이 없습니다.

그러므로 당신은 당신이하고있는 일과 행동을 관찰 할 필요가 있습니다. 예를 들어, 피드를 가져 오는 경우 사용자가 출력을보고 어떤 방식 으로든 결과를 캐시해야하기 전에 어느 시점에서이 작업을 수행 할 수 있습니까? 아니면 사용자로부터 피드 요청을받을 수 있습니까? 그 (것)들을 위해 그 (것)들을위한 자료가있을 때 그 (것)들을 이메일을 보내십시오.

당신이 여기에서 가지고있는 문제는 당신이 완료하기 위하여 적당한 시간보다는 오래 걸리는 무언가를 요구하고있다, 그러므로 당신은 당신이하고있는 일과 행동을 잘 살펴보십시오.