Resque vs Sidekiq?

В настоящее время я использую Resque для моего фонового процесса, но в последнее время я слышал много шума от sidekiq. Может ли кто-нибудь сравнить/дифференцировать?

В частности, я хотел бы знать, есть ли способ программно определить, завершено ли задание в sidekiq

Ответ 1

Resque:

Плюсы:

  • не требует безопасности потоков (работает практически с любым камнем);
  • не имеет предпочтения переводчика (вы можете использовать любой ruby);
    Resque теперь поддерживает MRI 1.9.3 или новее
  • загрузки плагинов.

против

  • запускает процесс на одного работника (использует больше памяти);
  • не выполняет повторные задания (в любом случае).

Sidekiq:

Доводы

  • запускает поток на одного рабочего (использует гораздо меньше памяти);
  • меньше forking (работает быстрее);
  • дополнительные опции.

против

  • [огромный] требует безопасности потоков вашего кода и всех зависимостей. Если вы запускаете небезопасный код с потоками, вы просите о проблемах;
  • работает на некоторых рубинах лучше других (рекомендуется jruby, эффективность на MRI уменьшается из-за GVL (глобальная блокировка VM)).

Ответ 2

На этой неделе Райан создал веб-трансляцию для Sidekiq, которая также включает некоторое сравнение с Resque. Вероятно, вы хотите проверить это:

Адрес: http://railscasts.com/episodes/366-sidekiq

Ответ 3

Из вопроса:

В частности, я хотел бы знать, есть ли способ контролировать программно, выполняется ли задание в sidekiq

Здесь решение для этого: