resque-планировщик и перекрывающиеся кроны


Я просто настраиваю resque-schedule и запускаю его, и он отлично работает с одной задачей расписания. Однако, когда я добавил второй по тому же графику cron, кажется, что он топает сам по себе. Вот что такое мой resque_schedule.yml выглядит следующим образом:

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

При запуске через Rake resque:scheduler я буду получать периодические ошибки:

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. 

Если я изменяю расписание, чтобы просто иметь один или другой, они играют хорошо. Если я изменю расписание хронов, чтобы они не пересекались, они будут работать нормально. Спасибо за любую помощь. На OSX 10.6.6, Руби 1.9.2p136.

Обратите внимание, что метод perform обоих классов просто имеет put для отладки прямо сейчас.

1 2

1 ответ:

Ладно, наверное, дурной тон отвечать на мой собственный вопрос, извиняюсь... Я нашел это так что поток и ключ был добавить: thread_safe = true, когда я load_resque:

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

Примечание: это было с redis 2.1.1, и я думал, что прочитал thread_safe теперь по умолчанию. Но я не нахожу эту статью...