Resque / Rails / Heroku:PG ::错误:结果已被清除

时间:2012-03-11 12:33:04

标签: ruby-on-rails postgresql heroku backgroundworker resque

我正在尝试使用heroku进行resque工作。它适用于我的其他应用程序,但我不理解工作日志中的这个错误:

PG::Error: result has been cleared: SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1

因此,每当我向队列中添加作业时,工作人员都会接受该作业并抛出上述错误。

这是工人阶级:

class Companies
  @queue = :companies

  def self.perform(current_user_id, model)
    @current_user = User.find(current_user_id)

    ... do things with @current_user and model...
  end
end

我使用:Resque.enqueue(Companies, current_user.id, 'quotes')

调用执行操作

2 个答案:

答案 0 :(得分:4)

此错误消息表示PG gem中的内部错误正用于与Postgres数据库进行交互。它表示垃圾收集/内存分配错误,其中已执行的postgres查询的结果已在访问时从内存中清除。

有人因为heroku必须调试它,它似乎是一个平台级问题。

答案 1 :(得分:4)

这通常与共享相同连接的多个进程/线程相关。您是否正在使用回调(after_forkbefore_hook)来为每个作业重新连接数据库?

有关详情,请参阅: https://stackoverflow.com/a/5519372/66752