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

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

  •  02-07-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

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

Другие советы

Я добавлю ди-джея (Отложенная работа) в список - http://blog .leetsoft.com/2008/2/17/delayed-job-dj

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

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

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

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

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

Для дальнейшего чтения вы, возможно, захотите взглянуть на Как запустить Backgroundjobsinrails из самого Рельсы Вики.

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

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

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

Приведенная ниже статья может помочь вам начать работу:

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top