Quelle est la meilleure façon d'exécuter des travaux asynchrones dans une application Rails?

StackOverflow https://stackoverflow.com/questions/124360

  •  02-07-2019
  •  | 
  •  

Question

Je sais qu'il existe plusieurs plugins qui effectuent un traitement asynchrone. Lequel est le meilleur et pourquoi?

Ceux que je connais sont:

Était-ce utile?

La solution

starling et workling semblent assez intéressants (voir le screencast ) si vous le pouvez plusieurs de ces processus et vous souhaitez les mettre en file d'attente.

vous pouvez également être intéressé par la screencast précédente qui utilise rake comme fond d'écran processus, et par le futur qui sera probablement sur une autre solution à la même question.

Autres conseils

Je vais ajouter DJ (travail différé) à la liste - http : //blog.leetsoft.com/2008/2/17/delayed-job-dj

Les gars de github ont récemment passé un excellent test: http://github.com/ blog / 197-la-nouvelle file d'attente

Que quelque chose soit la "meilleure" solution dépend vraiment du problème que vous essayez de résoudre. Dans certains cas, la meilleure solution sera la solution la plus légère, dans d’autres, le plus lourd.

BackgroundRb est probablement le processeur de tâches en arrière-plan le plus complet de Rails, mais C'est aussi le plus compliqué, il faudra donc investir davantage pour le maîtriser. BackgroundRb peut probablement gérer la plupart des cas d’utilisation, du plus simple au plus complexe.

J'ai entendu de très bonnes choses sur le travail en arrière-plan d'Ara T. Howard (Bj) qui, pour citer le README, est une file d’attente prioritaire en arrière-plan zéro mort mort pour Rails . Ceci est une solution beaucoup plus légère et peut être préférable à BackgroundRb pour la majorité des scénarios.

Si tout ce que vous voulez, c'est une solution pour le traitement peu fréquent de style par lots hors connexion, script / runner fourni avec toutes les applications Rails serait plus que suffisant.

Pour en savoir plus, consultez HowToRunBackgroundJobsInRails à partir de Wiki Rails .

Resque peut également vous aider.

C'est un très bon outil pour créer des tâches en arrière-plan, les placer dans plusieurs files d'attente et les traiter ultérieurement.

Les gars du Github l'ont créé et l'utilisent.

L'article ci-dessous peut vous aider à démarrer:

http://rubylearning.com/blog/2010 / 11/08 / vous-savez-resque /

Le plugin Starling + Workling est d’une simplicité déconcertante. De plus, il utilise Memcached qui est simple, testé et évolutif.

BackgrounDRb - Avantages: complet, messagerie, inconvénients: fileté (eek - Rails n'est pas un fil sûr!), complexe

Générateur de démons - Avantages: Simple, exécute des travaux et c'est tout!, inconvénients : Aucun de ces messages de fantaisie.

Nous utilisons Cron. Facile à configurer, facile à entretenir et ça marche toujours.

BackgroundRb mangera votre cerveau.

BackgrounDRb n’est pas threadé, il est complètement basé sur le processus. Il ne possède qu'une fonctionnalité de pools de threads que l'utilisateur peut utiliser s'il souhaite gérer simultanément des tâches liées à l'IO.

Essayez la version 1.1 et informez-moi (sur mon blog) ou sur la liste de diffusion de tout problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top