Мои отчеты о создании приложений основаны на данных, собранных из внешних API, что может занять несколько минут. Естественно, я не хочу блокировать рабочий процесс. Возможно ли отправить сбор данных на задний план и позволить пользователю работать с приложением дальше? Также будет хорошо отображать состояние задания с помощью SSE или WebSockets.неблокирующий ввод-вывод в рубинах на рельсах
0
A
ответ
1
Обычно вы бы направить фоновое задание на к Resque или другой фоновой очереди заданий, и ваш работник выполняет задания из очереди.
Это выглядит следующим образом:
class ReportGenerationJob
# ...
def work
# do expensive operations here
end
end
r = Resque.new
r << ReportGenerationJob.new(...) # Not a blocking operation!
После того, как данная работа будет завершена, ваш работник может затем сигнализировать, когда это делается в некоторых полезным способом (например, по электронной почте пользователю, что завершена работа, при записи значение «сделано!» в вашей базе данных и т. д.).
Смежные вопросы
- 1. Суммы в рубинах на рельсах
- 2. Динамические методы в рубинах/рельсах
- 3. драгоценные камни в рубинах на рельсах
- 4. Создание групп в рубинах на рельсах
- 5. Поиск Несколько моделей в рубинах на рельсах
- 6. Панировочные сухари в рубинах на рельсах
- 7. Пользовательские леса в рубинах на рельсах
- 8. Функция Devkit в рубинах на рельсах
- 9. Диапазон дат в рубинах/рельсах
- 10. Относительные даты в рубинах/рельсах
- 11. Условный проход в рубинах/рельсах?
- 12. Даты естественного языка в рубинах/рельсах?
- 13. Одна из трех таблиц в рубинах на рельсах
- 14. Использование дефис для URL-адресов в рубинах на рельсах
- 15. Параметры для генерации контроллеров в рубинах на рельсах?
- 16. визуальные эффекты, не работающие в рубинах на рельсах
- 17. Почему моя переменная шаблона игнорируется в рубинах на рельсах?
- 18. Как сортировать в рубинах/рельсах на двух полях?
- 19. Автоматическое создание PDF-файлов в рубинах на рельсах
- 20. Как разрешить обрезку и позиционирование фотографий в рубинах на рельсах?
- 21. Интеграция платежей по платежным потокам в рубинах на рельсах
- 22. Как сохранить позиции баскетболистов в рубинах на рельсах
- 23. Ошибка в установке rmagick в рубинах и рельсах
- 24. Оценка короткого замыкания в рубинах/рельсах с заданными значениями?
- 25. INSERT и UPDATE в рубинах/рельсах с использованием функций PostgreSQL
- 26. Создание интерактивных виджетах ajax javascript в рубинах/рельсах
- 27. Создание потокобезопасных неразрушающих уникальных имен файлов в рубинах/рельсах
- 28. подтаблицы и ссылки на данные в других таблицах в рубинах на рельсах
- 29. Добавление поддержки на стороне сервера для JSONP в рубинах на рельсах
- 30. Позволяет пользователям редактировать некоторую информацию только на рубинах на рельсах, но не на администраторах
но как я могу отправить WebSocket или SSE при завершении задания? Есть ли какое-то «обещание» или что-то доступное? Я имею в виду, не должен ли я ждать, пока он будет полным, что будет дискредитировать материал resque? – lessless
Существует много разных способов сделать это, и это будет зависеть от того, на какой платформе вы находитесь, и на ваших других требованиях. Одна статья, которая может быть полезна, находится здесь: http://www.bytelion.com/blog/rails-app-with-html5-websockets/ –