1

在一个带有 的 rails 项目中delayed_job,我遇到了一些奇怪的事情。

我有一个article模型,这个模型可以很大,在几个字段中有很多文本段落。

如果我做:

an_article.delay.do_something

创建的Delayed::Job不会进入队列,它永远不会被标记为失败或成功,而且我的日志不承认它的存在。但是,如果我这样做

def self.proxy_method(article_id)
  an_article = Article.find(article_id)
  an_article.do_something
end

Article.proxy_method(an_article.id)

它按预期工作。

关于作业对象的大小是否有一些不成文的规定?为什么A不起作用,但B起作用?

我的一个理论是,因为我有点接近 mongolab(430 / 496 mb)的数据上限,所以这项工作永远不会进入数据库,但我没有日志或错误来真正证明这一点。


注意:delayed_job 在 heroku、rails 3.1 上使用 mongoid

4

1 回答 1

1

根据我的经验,永远不要将对象推送到队列中,而是使用对象的 id。这是有问题的并且很难调试。

我在此主题上写了一篇详细的帖子: https ://stackoverflow.com/a/15672001/226255

于 2013-07-10T12:11:12.500 回答