Was ist der beste Weg, asynchrone Aufträge in einer Rails-Anwendung ausführen?
-
02-07-2019 - |
Frage
Ich weiß, es gibt einige Plugins, die asynchrone Verarbeitung zu tun. Welches ist die beste und warum?
Die, die ich kenne, sind:
Lösung
Star und workling scheinen ziemlich interessant (siehe Screencasts ), wenn Sie könnte haben mehrere solchen Prozess, und Sie wollen, dass sie in der Warteschlange.
könnten Sie auch durch die diese Verwendung Rechen für Hintergrund vorherigen Screencasts interessiert sein Prozess und durch die Zukunft eines, die wahrscheinlich über eine andere Lösung auf die gleiche Frage sein wird.
Andere Tipps
Ich werde DJ (Delayed Job) zur Liste - http : //blog.leetsoft.com/2008/2/17/delayed-job-dj
Die Github Jungs gab es kürzlich eine große Kritik: http://github.com/ Blog / 197-the-new-Warteschlange
Ob etwas die ‚beste‘ Lösung hängt wirklich davon ab, was das Problem ist, Sie versuchen zu lösen. In einigen Fällen wird die beste Lösung, die leichteste Lösung sein, in anderen die meisten Schwergewicht.
BackgrounDRb ist wahrscheinlich der voll funktionsfähige Rails Hintergrund Job-Prozessor, aber es ist auch die komplizierteste so wird mehr Investitionen erfordern in den Griff zu bekommen. BackgrounDRb kann wahrscheinlich behandeln den meisten Fällen verwenden, vom Einfachen zum Komplexen.
Ich habe sehr gute Dinge über Ara T. Howard Hintergrund Job (Bj), das ist die Readme zu zitieren ein hirntot einfach Null Admin Hintergrund Prioritätswarteschlange für Rails . Dies ist eine viel leichtere Lösung und kann BackgrounDRb für eine Mehrheit von Szenarien als Ergebnis vorzuziehen.
Wenn alles, was Sie wollen, ist eine Lösung für seltene offline Batch-Stil Verarbeitung dann script/runner
das kommt mit allen Rails-Anwendungen wäre mehr als ausreichend sein.
Für weitere Lesen Sie könnte unter HowToRunBackgroundJobsInRails von der Rails Wiki .
Resque können Sie auch helfen.
Es ist ein sehr nettes Tool für Arbeitsplätze Hintergrund zu schaffen, diese Arbeitsplätze auf mehreren Warteschlangen platzieren und die Verarbeitung zu einem späteren Zeitpunkt.
Die Jungs von Github haben sie erstellt und verwendet werden.
Der folgende Artikel kann Ihnen helfen, loszulegen:
http://rubylearning.com/blog/2010 / 11/08 / do-you-know-resque /
Starling + Workling Plugin ist tot einfach. Plus, es nutzt Memcached, die einfach, getestet und skalierbar ist.
BackgrounDRb - Pro: Voll ausgestattete, Messaging, Nachteile: Gewinde (eek - Rails ist nicht Thread sicher!), komplexe
Daemon Generator - Vorteile: Einfache, läuft Arbeitsplätze und das ist es !, Cons . Keine dieser Phantasie-Messaging-Sachen
Wir Cron verwenden. Leicht einzurichten, leicht zu pflegen, und es funktioniert immer.
BackgrounDRb essen Ihr Gehirn.
BackgrounDRb nicht mit Gewinde versehen ist, das vollständig Prozess basiert. Es hat nur eine Funktion von Thread-Pools, die Benutzer verwenden können, wenn er will, gleichzeitig IO gebunden Aufgaben zu erfüllen.
Versuchen Version 1.1 und lassen Sie mich (auf meinem Blog) oder auf Mailingliste wissen, über alle Fragen.