延迟的作业有时不保存记录

时间:2019-04-09 20:51:13

标签: ruby-on-rails delayed-job

我有一个周期性的延迟作业,该延迟的作业会发送一封确认电子邮件,并将订单标记为已完成,以便下次延迟作业运行该订单时,将不会对其进行重新处理。

有时(似乎是某个字符串绑定到促销代码字段,但这可能只是巧合),作业处理并发送电子邮件,但不保存记录并将其标记为已完成。我已使用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

0 个答案:

没有答案