0

このタイトルは一口だと思います...

私のアプリは現在、アカウントでアクティビティが発生したときにすべてのユーザーに毎日メールを送信するように設定されています。これを実現するために、rufus_schedulerを介してcronタスクを実行し、delayed_jobを使用して電子メールの配信を遅らせます。これは次のようになります。

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

残念ながら、この組み合わせ(rufus_schedulerとdelayed_job)を使用すると、Herokuにデプロイされたときに各ユーザーにメールが2回配信されるようになります。

開発中にこれを複製しようとしましたが、複製できませんでした。また、コントローラーメソッドを使用してdelayed_jobをトリガーした場合、つまり誰かが新しいアカウントを作成した場合など、問題は発生しません。

これを整理するのに助けがあれば大歓迎です。

どうもありがとう。

4

2 に答える 2

1

Herokuスケジューラーを使用して、それを介して呼び出すのはなぜですか?それは別のプロセスを生み出すので、そこでdelayed_jobを使用する必要もありません...単純化:)

于 2012-05-02T09:30:51.807 に答える
0

おそらくこれの理由はscheduler.cronconfig/initializer/what_ever ファイルを呼び出して、スケジューラーがrailsプロセスANDおよびdelayed_jobプロセスで実行されているためです。

これはその質問に対する簡単な答えかもしれません。

于 2012-08-26T22:17:16.313 に答える