私はHerokuでDelayed :: Jobを実行する際に問題があります。遅延実行のためにキューに入れられたジョブのほとんどは、の2回実行されます(たまに1回のみ)。だから、私のSendgridの電子メールのほとんどは二重に送られてきました。そして、私のActiveMerchant取引の大部分は、自分自身を2回解決しようとしています!Delayed :: Herokuで2回実行中のジョブ?
私たちはHerokuのインスタンスで2人のワーカーを実行しています。一致?私はバックアップと物事のためのcronも持っているので、2つが必要だと思う。
2回発生するジョブは、互いに重なり合って(計り知れないほど近くに)発生します。競合状態ですが、原因は何ですか?
詳細は以下のとおりです。
$ heroku stack
aspen-mri-1.8.6
bamboo-mri-1.9.2
* bamboo-ree-1.8.7
cedar (beta)
は、我々は10件のウェブdynosを実行し、浪人のデータベースを持っています。プラグインワイズ我々は持っている:Gemfileで
Basic Release Management FREE
Cron Daily Cron FREE
Custom Domains FREE
Expanded Logging FREE
Hostname SSL 20.00 PER MONTH
PG Backups Basic FREE
Sendgrid Pro 20.00 PER MONTH
Shared Database 5MB FREE
を:
gem 'rails', '3.0.6'
gem 'delayed_job', :git => 'git://github.com/collectiveidea/delayed_job.git', :tag => 'v2.1.2' # 3.x doesn't seem to work with Heroku
私のハンドラは次のようになります。
class OrderEmailJob < Struct.new(:order_id, :email_type)
def perform
OrderMailer.send(email_type, Order.find(order_id)).deliver
end
end
と同様にキューイングされている:私は多くを試してみました
Delayed::Job.enqueue OrderEmailJob.new(self.id, :order_confirmation)
異なったバージョンのDJが、これは唯一のものでした私はHerokuのような仕事をすることができました。
本当にありがとうございます。これは私たちのサイトにとって非常に悪いことです。
あなたの仕事とcronコードを投稿する必要があります。 – s84
あなたのメーラーに 'send'という定義がありますか? – s84
@Codeglotいいえ、それはルビーの送信方法http://ruby-doc.org/core/classes/Object.html#M000999です。 – user874500