ruby-on-rails - 如何知道delayed_job 什么时候完成了它的工作?

标签 ruby-on-rails screen-scraping delayed-job

我目前在我的模型中有一种方法可以抓取网站并将记录插入数据库。

def self.scrape
  #scrape
  #insert into database
end

我设置了一个 Controller 方法来调用它:
def scrape
  Website.send_later(:scrape)
end

抓取工作正常,并通过控制台运行对其进行了测试。但是,通过调用 Controller 方法激活它来运行它不起作用。

我试过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 ...

我在应该插入数据的数据库表中看不到任何内容。

最佳答案

作为确定作业是否已运行并完成的一种方法,您可以使用延迟作业提供的 Hook 将小记录写入作业状态模型。在这种情况下,有一些钩子(Hook)可能有用,最有趣的是:

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

有类似的成功和完成,你可以类似地使用。我意识到这可能比你想要的要重,但它会做你想做的事,并且可能值得付出代价。 delay_job 表似乎没有像您想要的那样包含足够的信息。

关于ruby-on-rails - 如何知道delayed_job 什么时候完成了它的工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7063760/

相关文章:

ruby-on-rails - 找不到 'id' =sign_out 的用户

ruby-on-rails - Rails session_store 多个域

用于HTML解析的Python正则表达式(BeautifulSoup)

ruby-on-rails - 单个延迟作业 worker 可以在正在进行的作业结束之前开始下一个作业吗?

ruby-on-rails - Rails 确定关联是 has_one 还是 has_many

ruby - 如何阻止网站中的 Watir ruby​​ gem 事件?

javascript - 使用 Phantomjs/Pjscrape 抓取多个页面

mysql - 当记录在 X 时间内未更新时通知用户

ruby-on-rails - 为什么使用crontab时无法运行启动延迟作业命令

mysql - 连接表中的反向关系