gpt4 book ai didi

ruby-on-rails - Resque缓存事件记录校准

转载 作者:IT王子 更新时间:2023-10-29 06:07:57 25 4
gpt4 key购买 nike

我有一个简单的 resque 作业,它接受一个模型 ID,获取它,然后对获取的项目调用一个方法。

class CupcakeWorker
@queue = :cupcake_queue
def self.perform(cupcake_id)
@cupcake = Cupcake.find(cupcake_id)
p @cupcake
end
end

我从 Cupcake 的模型中排队,after_commit 使用 'enqueue' 方法

def bake
Resque.enqueue(CupcakeWorker, self.id)
end

作业排队并正确执行。但是,如果我在数据库中或通过 UI 修改记录的数据并继续将作业再次排队,则操作不会使用新值执行。

如果我重新启动 resque 工作进程,我只能让它获取新值。 resque 是否正在缓存对象?有没有办法确保每次调用 worker 时都从数据库中重新获取它?

编辑:

我什至提取了查询日志...提交发生在获取纸杯蛋糕的选择查询之前...所以这既不是订单的竞争条件,也不是查询获取它时的缓存问题......是无知的家伙..那会是什么?顺便说一句,我在 rails 2.3.8 和 redis n resque 组合中使用 after_commit gem

最佳答案

您可以尝试使用此代码强制重新请求命中数据库

ActiveRecord::Base.uncached do
@cupcake = Cupcake.find(cupcake_id)
end

未缓存在 2.3.8 中可用

这应该有效,除非问题不是真正的缓存问题。让我们知道它是否适合您。

关于ruby-on-rails - Resque缓存事件记录校准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15092766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com