我正在尝试使用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')
答案 0 :(得分:4)
此错误消息表示PG gem中的内部错误正用于与Postgres数据库进行交互。它表示垃圾收集/内存分配错误,其中已执行的postgres查询的结果已在访问时从内存中清除。
有人因为heroku必须调试它,它似乎是一个平台级问题。
答案 1 :(得分:4)
这通常与共享相同连接的多个进程/线程相关。您是否正在使用回调(after_fork
或before_hook
)来为每个作业重新连接数据库?