Каков наилучший способ запуска асинхронных заданий в приложении Rails? - PullRequest
15 голосов
/ 24 сентября 2008

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

Те, о которых я знаю:

Ответы [ 8 ]

9 голосов
/ 04 ноября 2008

Я добавлю DJ (Delayed Job) в список - http://blog.leetsoft.com/2008/2/17/delayed-job-dj

Ребята из github недавно дали ему отличный обзор: http://github.com/blog/197-the-new-queue

8 голосов
/ 24 сентября 2008

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

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

7 голосов
/ 24 сентября 2008

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

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

Я слышал очень хорошие вещи об Ара Т. Говарде Фоновое задание (Bj), которое, по выражению README, представляет собой просто мертвая очередь с нулевым приоритетом администратора. для рельсов . Это гораздо более легкое решение и может быть предпочтительнее, чем BackgroundRb для большинства сценариев.

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

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

4 голосов
/ 12 декабря 2010

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

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

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

Статья ниже может помочь вам начать:

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

3 голосов
/ 24 сентября 2008

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

3 голосов
/ 24 сентября 2008

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

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

1 голос
/ 24 сентября 2008

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

BackgroundRb съест ваш мозг.

0 голосов
/ 04 ноября 2008

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...