Каков наилучший способ запуска асинхронных заданий в приложении Rails?

Я знаю, что есть несколько плагинов, которые выполняют асинхронную обработку. Какой из них лучший и почему?

Я знаю, что:

Ответы

Ответ 1

скворцы и работающие выглядят довольно интересными (см. screencast), если у вас может быть несколько таких процессов, и вы хотите их поставить в очередь.

вам также может быть интересен предыдущий скринкаст, который использует рейк для фонового процесса, а также будущий, который, вероятно, будет о другом решении к тому же вопросу.

Ответ 3

Является ли что-то "лучшим" решением, действительно зависит от проблемы, которую вы пытаетесь решить. В некоторых случаях лучшим решением будет самое легкое решение, в другом - в супертяжелом весе.

BackgroundRb, вероятно, является наиболее полнофункциональным процессором обработки заданий Rails, но он также самый сложный, поэтому требуют больше инвестиций, чтобы справиться с этим. BackgroundRb, вероятно, может обрабатывать большинство случаев использования, от простого до сложного.

Я слышал очень хорошие вещи об Ara T. Howard Фоновое задание (Bj), которое, цитируя README - это головоломка с нулевым приоритетом для обычного администратора для Rails. Это гораздо более легкое решение и может быть предпочтительным для BackgroundRb для большинства сценариев.

Если все, что вы хотите, является решением для нередкой автономной обработки в пакетном режиме, то script/runner, который поставляется со всеми приложениями Rails, будет больше, чем адекватны.

Для дальнейшего чтения вы можете посмотреть HowToRunBackgroundJobsInRails из Rails Wiki.

Ответ 4

Resque также может помочь вам.

Это очень хороший инструмент для создания фоновых заданий, размещения этих заданий в нескольких очередях и последующей обработки.

Ребята из Github создали и использовали его.

Ниже приведена следующая статья:

http://rubylearning.com/blog/2010/11/08/do-you-know-resque/

Ответ 5

BackgrounDRb - Плюсы: Полнофункциональный, обмен сообщениями, Минусы: Резьбовое (eek - Rails не является потокобезопасным!), сложный

Daemon Generator - Плюсы: Простой, запускает задания, и вот оно!, Минусы: Ничего из этого причудливого обмена сообщениями.

Ответ 6

Плагин Starling + Workling прост. Кроме того, он использует Memcached, который прост, проверен и масштабируется.

Ответ 7

Мы используем Cron. Легко настраивается, прост в обслуживании и всегда работает.

BackgroundRb будет есть ваш мозг.

Ответ 8

BackgrounDRb не является потоковым, его полностью основан на процессе. Он имеет только функцию пулов потоков, которые пользователь может использовать, если он хочет одновременно обрабатывать связанные с IO задачи.

Попробуйте 1.1 релиз и позвольте мне (в моем блоге) или в списке рассылки узнать о любых проблемах.