Resque vs Sidekiq? [fermé]

127

J'utilise actuellement Resquepour mon processus d'arrière-plan, mais récemment, j'ai entendu parler de beaucoup de huff-buff sidekiq. Quelqu'un pourrait-il comparer / différencier?

En particulier, j'aimerais savoir s'il existe un moyen de surveiller par programme si un travail est terminé en sidekiq

Bhushan Lodha
la source
71
Suis tellement excité de voir que cette question n'a pas été fermée comme n'étant "pas appropriée pour SO".
Dogweather
51
Pouvons-nous arrêter de fermer toutes les bonnes questions s'il vous plaît les gens. Je sais que c'est assez large, c'est aussi assez important et assez intéressant.
superluminaire
19
Un jour, ils inventeront un site où les programmeurs pourront poser des questions, et ce site permettra des réponses subjectives. Questions qui peuvent être ignorées, voire votées en fonction de leur pertinence.
baash05
4
@ baash05 et il s'appellera Quora!
nakhli
6
Il s'appellera Yahoo Answers, et la qualité chutera à travers le sol.
halfer

Réponses:

130

Resque:

Avantages:

Les inconvénients

  • exécute un processus par travailleur (utilise plus de mémoire);
  • ne réessaye pas les travaux (prêts à l'emploi, de toute façon).

Sidekiq:

Avantages

  • exécute le thread par travailleur (utilise beaucoup moins de mémoire);
  • moins de fourche (fonctionne plus vite);
  • plus d'options hors de la boîte.

Les inconvénients

  • [énorme] requiert la sécurité des threads de votre code et de toutes les dépendances . Si vous exécutez du code thread-unsafe avec des threads, vous demandez des problèmes;
  • fonctionne mieux sur certains rubis que sur d'autres (jruby est recommandé, l'efficacité sur l'IRM est diminuée en raison du GVL (Global VM Lock)).
Sergio Tulentsev
la source
19
Comment savez-vous si vous exécutez "thread unsafe code"?
Dogweather
4
Par exemple, si vous stockez l'état dans des variables globales, alors vous avez des problèmes :) Quant aux gemmes, en voici quelques-unes dans le wiki .
Sergio Tulentsev
25
@mrbrdo Vous ne pouvez pas vous tromper davantage. GVL n'a rien à voir avec la sécurité des threads de votre code ruby. GVL concerne la sécurité des threads du code d'interprétation ruby ​​(code MRI C).
radarek
2
Je dois contredire le «pro» sur Resque qui dit «vous pouvez utiliser n'importe quel rubis». Le README for Resque dit aujourd'hui: «Nous serions ravis de prendre en charge les rubis non IRM, mais ils peuvent avoir des bogues. github.com/resque/resque/blob/master/README.md#requirements
JellicleCat
2
J'éviterais particulièrement Sidekiq si vous prévoyez d'exécuter JavaScript dans vos travaux en utilisant therubyracer. Ce n'est pas une faute de Sidekiq en soi, mais le multi-threading pose des problèmes pour therubyracer. Voir github.com/cowboyd/therubyracer/issues/206
Jeremy Burton
10

De la question:

En particulier, j'aimerais savoir s'il existe un moyen de surveiller par programme si un travail est terminé dans sidekiq

Voici une solution pour cela:

  1. Sidekiq :: Gemme de statut
  2. API Batch (Sidekiq Pro) - utilisation
Gurpartap Singh
la source