Pregunta

Solo estoy poniendo en funcionamiento de resque y funciona bien con una tarea de horario. Sin embargo, cuando agregué un segundo en el mismo horario de Cron, parece que está pisoteando sobre sí mismo. Así es como se ve mi resque_schedule.yml:

email_subscription_notification:
  cron: * * * * *
  class: SubscriptionProcessor
  args: test
  description: Email Notifications
email_polling:
  cron: * * * * *
  class: EmailPollingProcessor
  args: test
  description: Email Polling

Cuando ejecute a través de Rake Resque: Scheduler, recibiré errores periódicos:

2011-03-15 17:43:00 Failed to enqueue EmailPollingProcessor:
  Got '0' as initial reply byte. If you're running in a multi-threaded environment, make sure you pass the :thread_safe option when initializing the connection. If you're in a forking environment, such as Unicorn, you need to connect to Redis after forking. 

Si cambio el horario para tener uno u otro, juegan bien. Si cambio los horarios de Cron para no superponerse, funcionan bien. Gracias por cualquier ayuda. OSX 10.6.6, Ruby 1.9.2p136.

Tenga en cuenta que el método de desempeño de ambas clases solo tiene para la depuración en este momento.

¿Fue útil?

Solución

Ok, probablemente mala forma respondiendo a mi propia pregunta, disculpas ... encontré esto Tan hilo y la pista era agregar: thread_safe = true cuando lo carga_resque:

Resque.redis = Redis.new(:host => config['host'], :port => config['port'], :thread_safe => true)

Nota: Esto fue con Redis 2.1.1 y pensé que había leído Thread_Safe era el valor predeterminado ahora. Pero no estoy encontrando ese artículo ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top