Tengo un problema al ejecutar Delayed :: Job en Heroku. La mayoría de los trabajos que están en cola para la ejecución demorada se ejecutan dos veces (ocasionalmente solo la vez). Así que la mayoría de mis correos electrónicos de Sendgrid se envían por duplicado, ¡y la mayoría de mis transacciones de ActiveMerchant intentan establecerse dos veces!Retrasado :: ¿Trabajos corriendo dos veces en Heroku?
Tenemos 2 trabajadores ejecutándose en nuestra instancia de Heroku. ¿Coincidencia? Creo que necesitamos dos porque también tenemos un cron para copias de seguridad y esas cosas.
Los trabajos que se producen dos veces se producen uno encima del otro (inconmensurablemente cerca). Es una condición de carrera, pero causada por qué?
Los detalles son los siguientes:
$ heroku stack
aspen-mri-1.8.6
bamboo-mri-1.9.2
* bamboo-ree-1.8.7
cedar (beta)
corremos 10 dinamómetros web, y tienen una base de datos Ronin. Plugin-sabia que tenemos:
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
En Gemfile:
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
Mis manejadores de aspecto:
class OrderEmailJob < Struct.new(:order_id, :email_type)
def perform
OrderMailer.send(email_type, Order.find(order_id)).deliver
end
end
y en cola como:
Delayed::Job.enqueue OrderEmailJob.new(self.id, :order_confirmation)
Probé un montón de diferentes versiones de DJ, pero este fue el único Podría ir a trabajar, tal como es, en Heroku.
Realmente agradecería cualquier sugerencia. Esto es muy malo para nuestro sitio.
debe publicar su trabajo y código cron. – s84
por lo que tiene una definición 'enviar' en su anuncio publicitario? – s84
@Codeglot No, ese es el método de envío ruby http://ruby-doc.org/core/classes/Object.html#M000999. – user874500