2011-12-29 5 views
1

...resque-status의 % 완료를 어떻게 출력합니까? 내가 Resque/레디 스에 대한 resque-상태를 사용하고

https://github.com/quirkey/resque-status

는 기본적으로 내가 .. 아래처럼 뭔가 새로운시나 방법을 만들려고합니다. 나는 2 개의 JobsWithStatus 만 가지고있어서 둘 다 또는 특정 하나를 반환 할 수있다. 나는 정말로 신경 쓰지 않는다.

post '/getstatus' do 
    # return status here of all kinds (or specific) 
end 

은 그럼 출력 상태를 5 초마다 확인 폴링 타이머를 사용하여 프론트 엔드에 JQuery와 통해 완료 %를 원한다.

이 내가 뭔가 난 그냥 status.pct_complete를 사용할 수있는 설명서를 말한다하지만 항상 0을 반환

post '/refresh' do 
    job_id = PostSaver.create(:length => Forum.count) 
    status = Resque::Status.get(job_id) 
    redirect '/' 
end 

이 무엇인가? 그럼에도 불구하고 루비가 처음인데 변수가 적절한 % 완료를 나타내더라도 별도의 시네마토스 항목 (/ refresh보다는/getstatus)에서 변수를 만드는 방법을 모르겠습니다. 당신이합니다 (at를 사용하는 데 필요한 상태가 0이 아닌 다른 무언가로 돌아 왔다고 ...

나는 그러나이 시도하고

post '/refresh' do 
    job_id = PostSaver.create(:length => Forum.count) 
    status = Resque::Status.get(job_id) 
    sleep 20 
    status.pct_complete.to_s 
end 

답변

2

0 레딧에 이상 질문을 보았다 반환 유지 http://rubydoc.info/github/quirkey/resque-status/master/Resque/JobWithStatus:at) 메소드를 사용하여 실행중인 계산 중 백분율을 설정하십시오.

조치 내에서 sleep 호출을 원하지 않을 것입니다. 타이머는 jQuery에 있어야합니다.


어떤 상태 (일부 jQuery를 # 아약스 전화를?)지고, 당신은 당신의 다음 요청 후 반환 된 JSON에서 작업 ID를 잡고 있습니다 그리고

post '/refresh' do 
    job_id = PostSaver.create(:length => Forum.count) 
    status = Resque::Status.get(job_id) 
    sleep 20 
    "{'percent_complete':#{status.pct_complete},'job_id':'#{job_id}'}" 
end 

공유 상태, 당신은 수도

post '/status' do 
    status = Resque::Status.get(params['job_id']) 
    "{'percent_complete':#{status.pct_complete}}" 
end 
+0

감사합니다 선생님! 완전한. – Tallboy

+0

수면은 나이가 0이되지 않는 시간을주는 테스트와 마찬가지로, 나는 별도의 시낫 트라 (sinatra) 방법으로 그것을 할 것입니다. 이것은 '/ refresh'메소드의 'status'변수를 '/ getstatus'메소드처럼 어딘가에서 사용할 수있게하는 방법에 대한 기본적인 질문입니다. – Tallboy

+0

일반적으로 작업간에 변수를 공유하지 않을 것입니다. 다른 것에서 액션을 렌더링하는 경우는 예외입니다 (이것은 sinatra에서 할 수있는 일이 아닙니다). 루비이기 때문에 어떤 종류의 상태 메소드를 정의하고 호출 할 수 있습니다. 내가 무엇을 의미 하는지를 알 수 있도록 편집 할 것입니다. –

관련 문제