Ruby on rails 当Sidekiq worker试图太快地引用模型时,如何在其中重新加载模型
当用户单击Rails UI中的按钮时,它会触发一个查找用户创建的记录的工作程序。例如,当用户创建一个“计划”在预定义的时间开始(有时是立即开始)时,工作人员会被解雇并尝试查找该计划,有时会出现“找不到记录”错误而失败Ruby on rails 当Sidekiq worker试图太快地引用模型时,如何在其中重新加载模型,ruby-on-rails,sidekiq,Ruby On Rails,Sidekiq,当用户单击Rails UI中的按钮时,它会触发一个查找用户创建的记录的工作程序。例如,当用户创建一个“计划”在预定义的时间开始(有时是立即开始)时,工作人员会被解雇并尝试查找该计划,有时会出现“找不到记录”错误而失败 这是当前的解决方法。当工人开始太快,找不到时间表时,我现在让它再次调用自己,然后它就工作了。但是,似乎应该有一种方法来“重新加载”模型,而不是重新启动整个worker。处理这种情况的一种方法是利用ActiveRecord提供的回调周期 创建后浮现在脑海中:https://apido
这是当前的解决方法。当工人开始太快,找不到时间表时,我现在让它再次调用自己,然后它就工作了。但是,似乎应该有一种方法来“重新加载”模型,而不是重新启动整个worker。处理这种情况的一种方法是利用
ActiveRecord
提供的回调周期
创建后
浮现在脑海中:https://apidock.com/rails/ActiveRecord/Callbacks/after_create
因此,在您的ScheduleTest
模型中:
after_create :trigger_worker
def trigger_worker
TestWorker.perform(id)
end
或者,您可以调用
perform\u async(id)
将其转储到队列中您正在查找:after\u commit回调,因此在提交数据库事务之前不会创建作业
after_create :trigger_worker
def trigger_worker
TestWorker.perform(id)
end