Как узнать, когда delayed_job сделал свою работу? - PullRequest
4 голосов
/ 15 августа 2011

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

def self.scrape
  #scrape
  #insert into database
end

Я настроил метод контроллера для его вызова:

def scrape
  Website.send_later(:scrape)
end

Соскоб работает и проверил его, пропустив через консоль.Однако, запустив его, активировав его через вызов метода контроллера, он не сработал.

Я пробовал rake jobs:work, он говорит следующее:

[Worker(host:thorpe-desktop pid:6962)] Starting job worker
[Worker(host:thorpe-desktop pid:6962)] Class#scrape completed after 0.5068
[Worker(host:thorpe-desktop pid:6962)] 1 jobs processed at 0.5898 j/s, 0 failed ...

Я не вижучто-нибудь в таблице базы данных, куда он должен был вставить данные.

Ответы [ 2 ]

2 голосов
/ 15 августа 2011

В качестве способа выяснить, было ли задание выполнено и выполнено, вы можете использовать ловушки, предоставляемые delayed_job, чтобы записать небольшую запись в модель job_status. Есть несколько хуков, которые могут быть полезны в этом случае, и наиболее интересными являются:

def after(job)
  record_stat 'newsletter_job/after'
end

Есть аналогичные для успеха и финиша, которые вы могли бы использовать аналогичным образом. Я понимаю, что это может быть тяжелее, чем вы хотите, но это будет делать то, что вы хотите, и может стоить затрат. Кажется, что таблица delayed_job содержит недостаточно информации, как для того, что вы хотите.

1 голос
/ 30 мая 2012

Этот вопрос опрос с delayed_job содержит хорошее описание того, как отслеживать, когда отложенные задания завершены или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...