Задержка задания не сохраняет запись иногда - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть повторяющееся отложенное задание, которое отправляет электронное письмо с подтверждением и помечает заказ как выполненный, чтобы при следующем запуске отложенного задания заказ не обрабатывался повторно.

Иногда (кажется, когда определенная строка связана с полем промокода, но это может быть просто совпадением), задание обрабатывает и отправляет электронное письмо, но не сохраняет запись и помечает ее как завершенную. Я использовал IRB, чтобы установить запись на то, что код будет, и проверил, что запись действительна.

Есть идеи, почему это может происходить или кто-нибудь видел это?

class PaymentEmailAndLock < Struct.new(:blank)
    include Delayed::RecurringJob
    run_at '8:00pm'
    run_every 1.day
    timezone 'US/Eastern'
    queue 'dailyjobs'
    def perform
        time_set = 30.hours.ago..2.hours.ago
        @mail_and_lock = Cart.where(updated_at:time_set,payment_sent:true,complete_order_lock:false)
        @mail_and_lock.each do |obj|
            obj.complete_order_lock = true
            obj.survey_available = true
            obj.save
            if obj.payment == 1
                MessageMailer.delay(queue: 'mailers').message_payment_paper(obj.cust_email,obj)
            else
                MessageMailer.delay(queue: 'mailers').message_payment_digital(obj.cust_email,obj)
            end
        end
    end
end
...