Ruby on rails 延迟的工作突然不起作用';你好像什么都没做?

Ruby on rails 延迟的工作突然不起作用';你好像什么都没做?,ruby-on-rails,ruby-on-rails-3,delayed-job,Ruby On Rails,Ruby On Rails 3,Delayed Job,我有一个刮板设置为使用延迟_作业,以便它在后台运行 class Scraper def do_scrape # do some scraping stuff end handle_asynchronously :do_scrape end 现在我可以异步注释掉handle\u行,打开控制台并运行scraper。它做的正是我期望它做的 然而,当我试图解雇被拖延的工作,它似乎没有做任何事情。除此之外,它似乎也没有记录任何重要的内容 下面是我的日志从将作业排队到运行rake作业:

我有一个刮板设置为使用延迟_作业,以便它在后台运行

class Scraper
  def do_scrape
    # do some scraping stuff
  end
  handle_asynchronously :do_scrape
end
现在我可以异步注释掉
handle\u
行,打开控制台并运行scraper。它做的正是我期望它做的

然而,当我试图解雇被拖延的工作,它似乎没有做任何事情。除此之外,它似乎也没有记录任何重要的内容

下面是我的日志从将作业排队到运行
rake作业: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", nil], ["locked_at", nil], ["locked_by", nil], ["priority", 0], ["run_at", Mon, 30 May 2011 21:19:25 UTC +00:00], ["updated_at", Mon, 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\u failed\u jobs=true


如果是,则将其设置为false,并查看delayed_jobs表中的异常,因为该异常导致它失败,并进行进一步调试。

我根本没有该设置,但我将其放入并将其设置为false。现在我被告知,
作业未能加载:未为Proc定义分配器。处理程序
。谷歌搜索告诉我,我可能会遇到这个错误,因为我试图推迟的工作太复杂了,所以我想我会设法解决这个问题。谢谢。我简化了一些事情,这似乎有帮助。@duckyfuzz我也有同样的错误,你能解释一下你试图拖延的工作“太复杂”是什么意思吗?你是如何简化的?@DavidSuite我也遇到了同样的错误。你能告诉我你做了什么来解决这个问题吗?这会有很大的帮助。@abhas这是很久以前的事了,但如果我没记错的话,问题是DJ必须序列化Scraper实例并将其存储在数据库中。如果你的刮板类是大而复杂的DJ可以扼杀。因此,我将异步行为转移到一个单独的、更简单的类中,并且一切正常。