Запуск медленных задач асинхронно в Rails? - PullRequest
1 голос
/ 16 декабря 2010

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

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

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

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

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

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

Спасибо!

1 Ответ

1 голос
/ 16 декабря 2010

Я рекомендую delayed_job, в частности этот форк и ветку .Я сам использую его на rails 2.3.5, и он хорошо работает.

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

Notifier.delay.deliver_signup @user

Кстати, просто разветвление является ошибкой, так как вы обнаружите, что у форка нет хорошего соединения с базой данных.

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