Как получить время отложенной работы? - PullRequest
3 голосов
/ 26 января 2011

Я выполняю некоторые фоновые задания с использованием delayed_job, и мне интересно, как я могу узнать, сколько времени заняло выполнение задания

информация отображается на сервере, но я не знаю, как ее сохранитьдля того, чтобы использовать его в моих контроллерах / просмотров

Delayed::Backend::ActiveRecord::Job Load (0.8ms)  SELECT "delayed_jobs".* FROM "delayed_jobs" WHERE ("delayed_jobs"."id" = 83) LIMIT 1
Completed 200 OK in 9ms (Views: 6.8ms | ActiveRecord: 0.8ms)
  AREL (0.4ms)  DELETE FROM "delayed_jobs" WHERE ("delayed_jobs"."id" = 83)

Ответы [ 2 ]

2 голосов
/ 26 января 2011

Поскольку отложенное задание удаляется из вашей базы данных после завершения, самый простой способ сделать это - сделать так, чтобы само задание сделало запись в вашей базе данных при запуске, а затем установить время завершения вашего обратного вызова, когда задание выполнено. завершено. Это не элегантно, но легко реализовать в существующей системе.

0 голосов
/ 17 февраля 2011

В DJ 2.1 задания можно определять до и после ловушек. Вы можете использовать их для записи времени начала и окончания в базе данных.

class ParanoidNewsletterJob < NewsletterJob
  def before(job)
    record_start job
  end

  def after(job)
    record_finish job
  end
...
end
...