如何在 Sidekiq 完成执行作业后更新 class 实例的状态?

How can I update the state of the class instance after Sidekiq has completed executing job?

我的模型中有这个方法,我想在 Sidekiq 完成工作后将 scheduled 状态更新为 sent

def deliver_message_and_update_state
    if email_scheduled_at?
      SendMessageWorker.perform_at(email_scheduled_at, id)
      self.update(state: "scheduled")
    else
      SendMessageWorker.perform_async(id)
      self.update(state: "sent")
    end
end

您的 sidekiq worker 不知道当前模型实例。因此,您必须在 worker 结束时更新状态,即在 worker 中执行您的代码之后。

在你的模型中

def deliver_message_and_update_state
  self.update(state: "scheduled")
  SendMessageWorker.perform_in(self.email_scheduled_at, self.id)
end

在你的工人中

class SendMessageWorker
  def perform(id)
  <Your code>
  YourModel.find(id).update(state: "sent")
  end
end