如何在 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
我的模型中有这个方法,我想在 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