2010-12-15 3 views
1

Я работаю над приложением Rails 2.3.x, которое должно запускать длительную медленную задачу асинхронно.Выполнение медленных задач асинхронно в Rails?

Откладывание запроса до завершения обработки - это немного боль. Мы рады просто отправить «Хорошо, мы получили это, и мы работаем над этим», - ответьте на реакцию клиента, а затем просто хрустите работу после того, как клиент ушел.

Итак, я видел несколько методов для этого (например, forking или cron), но кажется, что системы очередей задач могут быть лучшей идеей.

Похоже, что три основные из них:

Воробей выглядит особенно интересно в связи с поддержкой Memcached это, но я не хотят просто выбирать один, не принимая обоснованного решения. Кто-нибудь имеет представление о лучших методах? Мне бы хотелось услышать о вашем опыте с вышеизложенным, особенно о любых крупных ошибках с этим подходом или упомянутых библиотек. Возможно, есть еще лучший способ сделать это, что я пропустил полностью?

Только так: Rails 3.x сейчас не вариант, это необходимо для Rails 2.3.x.

Спасибо!

+3

Также попробуйте: [navvy] (https://github.com/jeffkreeftmeijer/navvy) и [delayed_job] (https://github.com/tobi/delayed_job) имеют хороший опыт работы с ними обоими, но нет специальных идей – iain 2010-12-16 01:10:13

+0

Вы всегда можете написать свой собственный. По моему опыту, сделав это, вы лучше поймете свою проблему, а также решение, и оно будет делать именно то, что вам нужно. Лучше потратить время, чем читать решения других людей по своим небольшим проблемам. – maerics 2010-12-16 06:18:32

ответ

1

Я рекомендую delayed_job, в частности this fork and branch. Я использую его самостоятельно на рейлах 2.3.5, и он работает хорошо.

Он имеет рельсы 3 ветви, когда вы хотите обновить, он работает с несколькими движками, и у него есть дополнительная симпатичная синтаксис:

Notifier.delay.deliver_signup @user 

Кстати, просто разветвление ошибка, как вы «У меня вилка не имеет хорошего соединения с базой данных.

Смежные вопросы