我正在尝试使用Sidekiq和Ruby on Rails在后台执行一些更新。但我遇到了一个奇怪的问题
当我将对象ID传递给worker时,我得到一个'找不到表任务'错误
这是我的代码,例如:
class PygmentsWorker
include Sidekiq::Worker
def perform(task_id)
task = Task.find(task_id)
task.update_attribute(:body, "well...")
end
end
我在保存后给工人打电话。
@task = Task.new(task_params)
respond_to do |format|
if @task.save
PygmentsWorker.perform_at(1.minute.from_now, @task.id)
答案 0 :(得分:0)
当您创建Sidekiq任务时,一些任务信息将存储在redis存储中(默认情况下),请记住redis无法存储ruby实例,因此如果您创建一个带有对象实例参数的任务,则所有任务都将转换为字符串和物体消失。
因此,如果你想调用一些对象实例,最好传递字符串或数字,然后再次在worker中创建或查找对象。
答案 1 :(得分:0)