ActiveRecord :: RecordNotFound в Sidekiq работнике, когда я сохраняю объект.Я не использую обратные вызовы рельсов - PullRequest
0 голосов
/ 04 января 2019

ActiveRecord :: RecordNotFound в Sidekiq работнике, когда я сохраняю объект.Я не использую обратные вызовы rails.

Я запускаю работника из службы и сохраняю объект в этой службе.

class LeadSmsSendingService < Rectify::Command
  ...initialize params

  def send_sms_message
    sms_conversation = lead.sms_conversations.find_or_create_by(sms_number: sms_number)
    attrs            = sms_form.to_hash.symbolize_keys.slice(:body, :direction, :from, :to)
                               .merge(campaign_id: campaign_id)
    sms_message      = sms_conversation.sms_messages.build(attrs)
    sms_message.to ||= lead.phone
    sms_message.body = VariableReplacement.new(lead).render(sms_message.body)

    # @todo we need to raise an exception here
    return unless sms_message.save

    DeliverSmsMessageWorker.perform_in(3.seconds, sms_message.id, 'LeadSmsSendingService')
  end
end

class DeliverSmsMessageWorker
  include Sidekiq::Worker
  sidekiq_options queue: 'priority'

  def perform(sms_message_id, from_where="Unknown")
    sms_message = SmsMessage.find(sms_message_id)

    sms_message.deliver!
  rescue StandardError => e
    Bugsnag.notify(e) do |report|
      # Add information to this report
      report.add_tab(:worker, { from_where: from_where.to_s })
    end
  end
end

1 Ответ

0 голосов
/ 04 января 2019

Кажется, что запись еще должна быть зафиксирована, даже если она звучит странно из-за 3-секундной задержки.Работает ли это, если вы увеличите эту задержку?

Эта ссылка может быть полезна: https://github.com/mperham/sidekiq/wiki/Problems-and-Troubleshooting#cannot-find-modelname-with-id12345

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...