Domanda

Mi sto solo resque-programma installato e funzionante e funziona benissimo con un compito di pianificazione. Tuttavia, quando ho aggiunto un secondo sullo stesso programma cron sembra è stomping su se stessa. Ecco cosa il mio aspetto resque_schedule.yml come:

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

Quando eseguo via rake resque: scheduler mi metterò errori periodici:

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. 

Se io modificare la pianificazione di avere solo uno o l'altro, giocano bene. Se cambio gli orari cron di non sovrapposizione, corrono bene. Grazie per tutto l'aiuto. OSx 10.6.6, Ruby 1.9.2p136.

Si noti entrambe le classi metodo di eseguire semplicemente mette per il debug al momento.

È stato utile?

Soluzione

Ok, probabilmente di cattivo gusto di rispondere alla mia domanda, le scuse ... Ho trovato questo discussione SO e l'indizio è stato quello di aggiungere: thread_safe = true quando ho load_resque:

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

Nota: Questo è stato con Redis 2.1.1 e ho pensato che avevo thread_safe lettura era il default ora. Ma, io non sto trovando che l'articolo ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top