加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 02:15:48 所属栏目:百科 来源:网络整理
导读:我目前在我的模型中有一个方法来刮取网站并将记录插入数据库. def self.scrape #scrape #insert into databaseend 我设置了一个控制器方法来调用它: def scrape Website.send_later(:scrape)end 抓取工作正在运行,并通过控制台运行测试.但是,通过调用控制器
我目前在我的模型中有一个方法来刮取网站并将记录插入数据库.

def self.scrape
  #scrape
  #insert into database
end

我设置了一个控制器方法来调用它:

def scrape
  Website.send_later(:scrape)
end

抓取工作正在运行,并通过控制台运行测试.但是,通过调用控制器方法激活它来运行它不起作用.

我尝试过rake的工作:工作说如下:

[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 ...

我没有在数据库表中看到应该插入数据的任何内容.

解决方法

作为判断作业是否已运行并完成的方法,您可以使用delayed_job提供的钩子将小记录写入job_status模型.在这种情况下有一些可能有用的钩子,最有趣的是:

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

有类似的成功和完成,你可以使用类似的.我意识到这可能比你想要的更重,但它会做你想要的,可能是值得的. delayed_job表似乎没有足够的信息来保存您想要的信息.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读