2011-06-14 3 views
0

"가능한"장기 실행 작업을 실행하는 작업이 있습니다. 가능하면 원격 서버에 요청을 보내고 네트워크 대기 시간 때문에 사용자 인터페이스를 차단하고 사용자에게 약간의 지연을 줄 수 있습니다.레일의 비동기 작업에 대한 사용자 피드백

내 질문은 "백그라운드에서 긴 작업을 보내는 방법"과 관련이 없지만 사용자에게 알림을 보내는 방법입니다. 내 생각에, 사용자가 버튼을 클릭하고, 백그라운드에서 작업을 시작하고, 웹 인터페이스를 차단 해제하고, 사용자가 원하는대로 할 수 있으며, 작업이 완료되면 플래시 메시지를받습니다. 서버를 폴링하는 AJAX로 할 수 있습니다. 예를 들어 내 작업의 상태를 알려주는 특정 작업을 수행 할 수 있지만 이벤트 기반으로 수행 할 패턴이 있습니까? 개념 증명 또는 프로토 타입을 사용하여 답변을 얻으십시오.

+0

[EventMachine] (https://github.com/eventmachine/eventmachine)을 알고 있습니까? – coreyward

+0

저는 컨트롤러와 컨트롤러를 통합하는 방법을 알고 있습니다. 내 컨트롤러에서 EM.run을 간단하게 시작할 수 없습니다. –

+0

그럼 패턴을 물어 보았습니다. EventMachine이 사용하는 패턴 (Reactor 패턴에 매우 근접한 패턴)은 사용자가 사용하고자하는 패턴입니다. 이것을 위해 설계되었습니다. Rails에서는 사용하지 않을 것입니다. Rails와 함께 사용할 수 있습니다. – coreyward

답변

1

여기에 개념 증명은 없지만 spawn 또는 delayed_job과 같은 것을 사용하여 Rails 작업을 시작하고 인터페이스 차단을 해제 한 다음 node.js 또는 유사한 것으로 클라이언트에 다시 통신 할 수 있습니다. 그러나 원하는 작업에 따라 더 긴 서버 소프트웨어를 설정하는 것보다 긴 폴링이 더 실용적 일 수 있습니다.

관련 문제