2017-01-25 8 views
0

Безопасно ли вызывать AC destroy в боковом методе? У меня есть этот метод, и он будет проходить через устройства и отправлять уведомления, если это не удастся, это уничтожит это устройство в спасении.Лучшая практика Sidekiq при попытке уничтожить объект в методе выполнения

Возможно ли, что один поток А приостановился сразу после этой строки «devices = Device.where (id: device_ids)», а поток B уничтожил тот же объект устройства, приостановленный потоком A, уже уничтожен? Как справиться с этой проблемой>

def perform(device_ids, message) 
    devices = Device.where(id: device_ids) 
    devices.each do |device| 
    begin 
     device.send_notification(message) 
    rescue Aws::SNS::Errors::EndpointDisabled 
     device.destroy 
    end 
    end 
end 

ответ

2

Если они оба пытаются уничтожить ту же запись в базе данных, да, может быть состояние гонки. Обычно вы спасаете и игнорируете ошибку.

 Смежные вопросы

  • Нет связанных вопросов^_^