Как вывести% выполнения статуса восстановления? - PullRequest
1 голос
/ 29 декабря 2011

Я использую resque-status для Resque / Redis ...

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

Я в основном хочу создать новый метод Синатры ... что-то вроде ниже.У меня есть только 2 JobsWithStatus, поэтому он может либо вернуть оба, либо конкретный, мне все равно.

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

Затем я хочу вывести% complete через jquery на внешний интерфейс, используя таймер опроса, который проверяетстатус каждые 5 секунд.

Это то, что у меня есть

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

В документации сказано, что я могу просто использовать status.pct_complete, но всегда возвращает 0?Даже тогда я новичок в ruby, и даже если переменная показала правильный% выполнения, я не уверена, как заставить эту переменную работать внутри отдельной записи sinatra (в / getstatus, а не / refresh).

Я пробовал это, однако, и он продолжает возвращать 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

1 Ответ

2 голосов
/ 30 декабря 2011

Увидел ваш вопрос на Reddit ...

Чтобы статус возвращался как-то, отличный от 0, вам нужно использовать метод at (http://rubydoc.info/github/quirkey/resque-status/master/Resque/JobWithStatus:at), чтобы установить процент во времявычисления выполняются.

Вы, вероятно, не хотите sleep вызовов внутри действия. Таймер должен быть в jQuery.


Статус общего доступа

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

Затем, что бы ни получало статус (какой-нибудь вызов jQuery # ajax?), Вы можете получить job_id из возвращенного JSON, а затем при следующем запросе вы можете сделать что-то вроде:

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