【问题标题】:ActiveJob deliver_later not sendingActiveJob Deliver_later 不发送
【发布时间】:2016-10-18 17:21:57
【问题描述】:

我有以下方法:

UserMailer.comment_alert(@comment, user, type).deliver_later

这奇怪地出现在 rails 日志中的参数 deliver_now

[ActiveJob] Enqueued ActionMailer::DeliveryJob (Job ID: 5bdf9ed1-53d5-42aa-acb2-7ce54ab284e1) to Sidekiq(mailers) with arguments: "UserMailer", "comment_alert", "deliver_now", gid://xxx/Comment/153, gid://xxx/User/26, "Comment"

作业从不处理,我在 Sidekiq 日志中看不到任何内容。也没有邮件送达,永远。我尝试重新启动sidekiq、rails和redis,甚至清除redis db。有趣的是更改为.deliver_now 有效,但这似乎并没有触及sidekiq 或创建Enqueued ActionMailer::DeliveryJob

在我的 application.rb 中:

config.active_job.queue_adapter = :sidekiq

我正在使用 rails 4.2.6activejob 4.2.6

【问题讨论】:

    标签: ruby-on-rails rails-activejob


    【解决方案1】:

    邮件在队列邮件中排队。记得启动 sidekiq 处理该队列:

    bundle exec sidekiq -q default -q mailers
    

    或者添加config/sidekiq.yml,内容如下

      :verbose: true
      :concurrency: 25
      :queues:
        - [mailers, 7]
        - [default, 5]
    

    然后运行bundle exec sidekiq -C config/sidekiq.yml

    【讨论】:

    • 感谢您为我解决了这个问题。
    • 这个 -q default -q mailers 在 2017 年对我有帮助。Sidekiq 5.0.5,Rails 5.1.4。谢谢!
    • 肯尼谢谢你!很棒的答案,经过几天的挫折,把这个从盘子里拿出来了。谁知道你必须要求你的新车配备轮子......
    • 如果您将配置放在config/sidekiq.yml,则不需要将其传递给bundle exec sidekiq
    • 这在分支上工作,但现在它合并到开发分支,它突然停止工作。有什么想法吗?
    【解决方案2】:

    如果您正在使用 sidekiq,请不要稍后使用 Deliver,因为该作业永远不会执行,而是使用 perform_in() 并调用带有 Deliver_now 的工作人员

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-15
      • 2018-04-11
      • 2019-05-29
      • 2016-09-04
      • 2016-01-12
      • 2015-11-28
      • 2020-01-06
      • 2016-02-15
      相关资源
      最近更新 更多