Resque vs Sidekiq? [cerrado]

127

Actualmente estoy usando Resquepara mi proceso en segundo plano, pero recientemente escuché mucho acerca de esto sidekiq. ¿Alguien podría comparar / diferenciar?

En particular, me gustaría saber si hay una manera de monitorear programáticamente si un trabajo se completa en sidekiq

Bhushan Lodha
fuente
71
Estoy tan emocionado de ver que esta pregunta no se ha cerrado como "no apropiada para SO".
Dogweather
51
¿Podemos dejar de cerrar toda la buena pregunta, por favor, gente? Sé que es bastante amplio, también es muy importante y bastante interesante.
superluminario
19
Un día inventarán un sitio donde los programadores pueden hacer preguntas, y ese sitio permitirá respuestas subjetivas. Preguntas que pueden ignorarse o incluso votarse según su relevancia.
baash05
44
@ baash05 y se llamará Quora!
nakhli
66
Se llamará Yahoo Answers, y la calidad caerá en picada.
halfer

Respuestas:

130

Resque:

Pros:

Contras

  • ejecuta un proceso por trabajador (usa más memoria);
  • no vuelve a intentar trabajos (fuera de la caja, de todos modos).

Sidekiq:

Pros

  • ejecuta hilo por trabajador (usa mucha menos memoria);
  • menos bifurcación (funciona más rápido);
  • Más opciones fuera de la caja.

Contras

  • [enorme] requiere seguridad de subprocesos de su código y todas las dependencias . Si ejecuta código inseguro con hilos con hilos, está pidiendo problemas;
  • funciona en algunos rubíes mejor que otros (se recomienda jruby, la eficiencia en MRI disminuye debido a GVL (bloqueo global de VM)).
Sergio Tulentsev
fuente
19
¿Cómo sabes si estás ejecutando "código inseguro de subprocesos"?
Dogweather
44
Por ejemplo, si está almacenando el estado en variables globales, entonces está en problemas :) En cuanto a las gemas, aquí hay algunas en la wiki .
Sergio Tulentsev
25
@mrbrdo No puedes estar más equivocado. GVL no tiene nada que ver con la seguridad del hilo de su código ruby. GVL trata sobre la seguridad de subprocesos del código de intérprete de ruby ​​(código MRI C).
radarek
2
Tengo que contradecir el 'pro' en Resque que dice 'puedes usar cualquier rubí'. El archivo README for Resque de hoy en realidad dice: "Nos encantaría apoyar a los rubíes que no son IRM, pero pueden tener errores". github.com/resque/resque/blob/master/README.md#requirements
JellicleCat
2
En particular, evitaría Sidekiq si planea ejecutar JavaScript dentro de sus trabajos utilizando therubyracer. No es culpa de Sidekiq per se, pero el subprocesamiento múltiple causa problemas al termorirador. Ver github.com/cowboyd/therubyracer/issues/206
Jeremy Burton
10

De la pregunta:

En particular, me gustaría saber si hay una manera de monitorear programáticamente si un trabajo se completa en sidekiq

Aquí hay una solución para eso:

  1. Sidekiq :: joya de estado
  2. Batch API (Sidekiq Pro) - uso
Gurpartap Singh
fuente