Resque vs Sidekiq? [fechadas]

127

Atualmente, estou usando Resquepara o meu processo em segundo plano, mas recentemente ouvi muitas críticas sobre isso sidekiq. Alguém poderia comparar / diferenciar?

Em particular, gostaria de saber se há uma maneira de monitorar programaticamente se um trabalho é concluído em sidekiq

Bhushan Lodha
fonte
71
Estou tão empolgado ao ver que esta questão não foi encerrada como "inadequada para SO".
22412 Dogweather
51
Podemos parar de fechar toda a boa pergunta, por favor, pessoal. Eu sei que é bastante amplo, também é muito importante e bastante interessante.
superluminary
19
Um dia eles vão inventar um site onde os programadores podem fazer perguntas, e esse site permitirá respostas subjetivas. Perguntas que podem ser ignoradas ou até votadas com base na relevância.
precisa saber é o seguinte
4
@ baash05 e será chamado Quora!
nakhli
6
Ele será chamado Yahoo Answers, e a qualidade cairá no chão.
halfer

Respostas:

130

Resque:

Prós:

Contras

  • executa um processo por trabalhador (usa mais memória);
  • não tenta novamente os trabalhos (pronto para uso).

Sidekiq:

Prós

  • executa thread por trabalhador (usa muito menos memória);
  • menos bifurcação (funciona mais rápido);
  • mais opções prontas para uso.

Contras

  • [enorme] requer segurança de thread do seu código e de todas as dependências . Se você executar um código inseguro de thread com threads, estará pedindo problemas;
  • funciona com alguns rubis melhor que outros (o jruby é recomendado, a eficiência na ressonância magnética diminui devido à GVL (bloqueio global da VM)).
Sergio Tulentsev
fonte
19
Como você sabe se está executando o "código não seguro de thread"?
22412 Dogweather
4
Por exemplo, se você está armazenando estado em variáveis ​​globais, está com problemas :) Quanto às gemas, aqui estão algumas no wiki .
Sergio Tulentsev
25
@mrbrdo Você não pode estar mais errado. A GVL não tem nada a ver com a segurança de threads do seu código ruby. GVL é sobre segurança de thread do código do interpretador de rubi (código MRI C).
radarek
2
Eu tenho que contradizer o 'profissional' do Resque que diz 'você pode usar qualquer rubi'. O README do Resque hoje diz realmente 'Gostaríamos de apoiar Rubis que não sejam da RM, mas eles podem ter bugs.' github.com/resque/resque/blob/master/README.md#requirements
JellicleCat
2
Eu particularmente evitaria o Sidekiq se você planeja executar o JavaScript em seus trabalhos usando o therubyracer. Não é uma falha do Sidekiq, por si só, mas o multithreading causa problemas para o therubyracer. Veja github.com/cowboyd/therubyracer/issues/206
Jeremy Burton
10

Da pergunta:

Em particular, gostaria de saber se há uma maneira de monitorar programaticamente se um trabalho é concluído no sidekiq

Aqui está uma solução para isso:

  1. Sidekiq :: Status gem
  2. API de lote (Sidekiq Pro) - uso
Gurpartap Singh
fonte