resque-scheduler и перекрывающиеся crons

Я просто запускаю 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. 

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

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


person Mark Nadig    schedule 16.03.2011    source источник


Ответы (1)


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

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

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

person Mark Nadig    schedule 16.03.2011
comment
Если вы найдете ответ, ответ на свой вопрос — это хорошо. Таким образом, любой, кто ищет решение той же проблемы, находит ответ, а не просто вопрос без ответа. - person Anomie; 17.03.2011