微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Delayed_job突然似乎什么都没做?

如何解决Delayed_job突然似乎什么都没做?

| 我有一个设置为使用delay_job的刮板,以便它在后台运行。
class Scraper
  def do_scrape
    # do some scraping stuff
  end
  handle_asynchronously :do_scrape
end
现在,我可以注释掉ѭ1行,打开控制台并正常运行刮板。它完全符合我的期望。 但是,当我尝试将刮板作为延迟的工作开除时,它似乎什么都没做。除此之外,它似乎也没有记录任何重要的信息。 这是我的日志从入职到运行
rake jobs:work
的样子。
County Load (1.0ms)  SELECT \"counties\".* FROM \"counties\" WHERE \"counties\".\"name\" = \'Fermanagh\' LIMIT 1
   (0.1ms)  BEGIN
  sql (20.5ms)  INSERT INTO \"delayed_jobs\" (\"attempts\",\"created_at\",\"Failed_at\",\"handler\",\"last_error\",\"locked_at\",\"locked_by\",\"priority\",\"run_at\",\"updated_at\") VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10) RETURNING \"id\"  [[\"attempts\",0],[\"created_at\",Mon,30 May 2011 21:19:25 UTC +00:00],[\"Failed_at\",nil],[\"handler\",\"--- 

# serialized object omitted for conciseness

nmethod_name: :refresh_listings_in_the_county_without_delay\\nargs: []\\n\\n\"],[\"last_error\",[\"locked_at\",[\"locked_by\",[\"priority\",[\"run_at\",[\"updated_at\",30 May 2011 21:19:25 UTC +00:00]]
   (0.9ms)  COMMIT
  Delayed::Backend::ActiveRecord::Job Load (0.4ms)  SELECT \"delayed_jobs\".* FROM \"delayed_jobs\" WHERE (locked_by = \'host:David-Tuites-MacBook-Pro.local pid:7743\' AND locked_at > \'2011-05-30 17:19:32.116511\') LIMIT 1
   (0.1ms)  BEGIN
  sql (0.3ms)  DELETE FROM \"delayed_jobs\" WHERE \"delayed_jobs\".\"id\" = $1  [[\"id\",42]]
   (0.4ms)  COMMIT
如您所见,它似乎只是插入一个作业,然后立即将其删除?此刮取方法至少需要几分钟。 最糟糕的是,昨晚它运行良好,我想不出我在做另一件事。我尝试将gem修复为以前的版本,以防它最近被更新,但似乎没有解决问题。 有任何想法吗?     

解决方法

        您是否配置了延迟的作业以删除失败的作业?在初始化程序中查找以下设置:
Delayed::Worker.destroy_failed_jobs = true
如果是,则将其设置为false并查看delay_jobs表中的异常导致的异常,然后进行进一步调试。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。