2013-09-13 5 views
0

У меня проблемы с преобразованием из Resque в Sidekiq. Я не получаю никаких ошибок, хотя perform_async(ids) ничего не добавляет к Redis. Я могу добавлять ключи непосредственно на сервер Redis через Redis.current.append("test", "key") Также мой рабочий Sidekiq подключается к серверу Redis, хотя я получаю пустой массив, когда я запрашиваю Sidekiq::Client.registered_workers. Веб-интерфейс показывает только скелет без информации, отличной от информации Redis. Я не знаю, имеет ли значение это значение, но Sidekiq.redis { |conn| conn.info } возвращает информацию, которая соответствует моему локальному серверу Redis. Хотя Sidekiq.server? возвращает значение nil.Sidekiq не подключается к Rails

Обновление: Когда я выполняю команду perform_async(args), она возвращает строку.

+0

Очевидные вопросы: Вы используете последнюю версию Sidekiq (2.14.1) и установите Redis 2.4 или выше? И вы используете хотя бы Ruby 1.9.3? –

+0

Да всем этим. –

ответ

0

Похоже, что ваша конфигурация Sidekiq не использует ту же конфигурацию redis для клиентских и серверных компонентов Sidekiq.

Клиент выполняется на сервере приложений Rails, а сервер - автономный отдельный процесс, в котором выполняется работа. Если они оба не используют одну и ту же очередь redis через redis-конфигурацию, работа не будет обрабатываться.

Вот конфигурационный блок пример config/initializers/sidekiq.rb с использованием тех же Redis для обоих компонентов:

redis = { url: (ENV['REDIS_URL'] || 'redis://127.0.0.1'), namespace: 'sidekiq' } 

Sidekiq.configure_server do |config| 
    config.redis = redis 
end 

Sidekiq.configure_client do |config| 
    config.redis = redis 
end 

Я предполагаю, что у вас есть другое пространство имен или конфигурации между клиентом и сервером конфигурации.

+0

Извините, у меня уже есть 'sidekiq.rb', который настраивает сервер и клиент на одно и то же пространство имен и адрес Redis. –

0

Я столкнулся с той же проблемой.

Оказывается, я был настроен rspec-sidekiq в development группе моих Gemfile «S и rspec-sidekiq, по-видимому тушат Асинхронные вызовы для тестирования.

Решение было внесении изменений в мой Gemfile как таковой:

gem 'rspec-sidekiq', group: :test, require: false 

Наконец, я добавил require 'rspec-sidekiq' в моем spec_helper.rb.

Смежные вопросы