【问题标题】:Heroku Delayed_Job firing twice when run through rufus_schedulerHeroku Delayed_Job 在通过 rufus_scheduler 时触发两次
【发布时间】:2012-10-06 19:07:26
【问题描述】:

我意识到这个标题是拗口的......

我的应用目前设置为每天在帐户有活动时向所有用户发送电子邮件。为了实现这一点,我通过 rufus_scheduler 运行一个 cron 任务,并使用 delay_job 延迟电子邮件发送,它看起来像这样:

scheduler.cron("0 12 * * *") do
  User.all.each do |user|
    Newideas.delay.newideas_email(user)
  end
end

不幸的是,在 Heroku 上部署时,使用这种组合(rufus_scheduler 和延迟作业)似乎会导致电子邮件向每个用户发送两次。

我试图在开发中复制这一点,但我无法做到。此外,当我使用控制器方法触发延迟作业时,问题不会发生 - 即当有人创建新帐户时等。

任何帮助解决这个问题将不胜感激。

非常感谢。

【问题讨论】:

    标签: ruby-on-rails-3 heroku delayed-job rufus-scheduler


    【解决方案1】:

    为什么不直接使用 Heroku 调度程序并通过它调用它呢?它产生了一个单独的过程,因此也不需要在其中使用延迟作业...简化:)

    【讨论】:

    • 我在调度程序中使用了延迟作业,因为有些任务需要很长时间才能执行,所以如果没有延迟作业,它们就会超时。另外,我会使用 Heroku 调度程序,但是当我们第一次构建应用程序时,只有 Cron 可用,它的运行频率不足以让我们使用它。我现在将所有内容都切换到 Heroku Scheduler 以查看是否可以解决问题 - 作为参考,这也是 Heroku 支持建议我做的。谢谢!
    【解决方案2】:

    也许原因很简单,您在config/initializer/what_ever 中调用scheduler.cron 文件,所以调度程序在 rails 进程 AND 和delayed_job 进程中运行?

    This 可能是该问题的简单答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-18
      • 2019-12-12
      • 1970-01-01
      • 2012-09-09
      • 2012-06-24
      • 2012-06-04
      • 2017-01-02
      • 1970-01-01
      相关资源
      最近更新 更多