Resque Workers с других хостов зарегистрированы и активны в моей системе

Приложение Rails, над которым я сейчас работаю, размещено на серверах Amazon EC2. Он использует Resque для запуска фоновых заданий, и есть 2 таких экземпляра (потенциальное производство и сцена). Также я подключил веб-приложение Resque для мониторинга к маршруту /resque (только на сцене).

Вот мой вопрос: почему в моей сценической системе зарегистрированы воркеры с нескольких хостов и как этого избежать?

Некоторые дополнительные подробности: я вижу рабочих, по-видимому, с 3-х разных машин, но мне удалось идентифицировать только 2 из них - этап (очевидно) и производство. Третий имеет другой формат адреса (начинается с domU) и понятия не имеет, что это может быть.

иностранные спасатели


person Sergey V.    schedule 24.12.2012    source источник


Ответы (2)


Похоже, вы используете один сервер Redis в нескольких средах серверов resque.

Лучший способ сделать это безопасно — использовать отдельные серверы Redis или отдельные базы данных или пространства имен Redis. Gem пространства имен Redis можно использовать с Resque для изоляции очередей Resque и рабочих данных каждой среды.

person Winfield    schedule 29.12.2012

Я не могу помочь вам с тем, что такое неизвестное, но у меня было что-то подобное при перемещении хостов и изменении имен DNS. Единственный найденный мной способ избавиться от старых — это остановить всех рабочих на машине, запустить IRB, require 'resque' и посмотреть на Resque.workers. В нем будут перечислены все рабочие, о которых знает resque, в вашем случае будет около 20 поддельных. Затем вы можете сделать:

Resque.workers.each do {|worker| worker.unregister_worker}

Это должно убрать всех ненужных воркеров и вернуть вас к правильному отображению настоящих воркеров.

person Chad    schedule 09.02.2013