2
class A
....
def something
if condition
mark_completed
// here I can see the object progress is completed
CompletionStatsWorker.perform_async(self.id)
end
end
def mark_completed
self.update_attributes!(progress: 'completed')
end
end
В работника:Sidekiq получает противоречивые данные
class CompletionStatsWorker
include Sidekiq::Worker
def perform(id)
obj = A.find(id)
//here I'm getting the progress of the same object as 'progressing'
end
end
Sidekiq каким-то образом получает старые данные, даже если он запускается после успешного поля Updation. Я вижу, что объект updated_at
не совпадает с фактическим значением updated_at
. Пожалуйста, помогите
Эй Олег, I» вы пробовали оба. Странно, что прогресс завершен, прежде чем я назову рабочего. Но внутри рабочего он снова показывает статус как прогрессирующий. Но в db он завершен сам. –
вы можете попробовать, просто для проверки, после метода 'mark_completed' добавьте' sleep 1'. То же самое в этом случае? –