Как мне обрабатывать длинные запросы на Rails App, чтобы другие пользователи не задерживались слишком долго?
595 просмотра
3 ответа
У меня есть приложение Rails на бесплатном уровне на Heroku, и недавно оно стало получать несколько пользователей. Одно из событий в моем приложении включает запрос другого API и может занять до 10 секунд. Как сделать так, чтобы другим пользователям, которые одновременно посещают простую страницу (как событие API другого пользователя), не нужно было ждать 10 секунд для загрузки своей страницы?
Нужно ли платить за большее количество Dynos? Это что-то, что может быть решено с гемом delayed_job? Может ли другой хост (например, AppFog или OpenShift) быстрее обрабатывать одновременные запросы?
Обновление: этот вопрос предполагает ручную обработку потоков вместо использования delayed_job.
Автор: Ari Источник Размещён: 13.11.2019 11:46Ответы (3)
1 плюс
Это похоже на ситуацию с отложенной работой. Если первый запрос просто ожидает, наиболее эффективным способом является назначение процесса, ожидающего его завершения, и освобождение процесса Rails для обработки другого запроса.
Автор: bgates Размещён: 06.08.2013 03:131 плюс
Да, вам нужно больше dynos, специальные рабочие dynos, те, которые работают в фоновом режиме, вы можете проверить этот Railscast на отложенных заданиях, которые также могут помочь:
http://railscasts.com/episodes/366-sidekiq
Также вот краткое руководство по добавлению единорога и нескольких потоков в ваш бесплатный экземпляр heroku:
https://devcenter.heroku.com/articles/rails-unicorn
Вы делите свой динамо на два или более экземпляров, каждый из которых может обрабатывать разные запросы.
Автор: Rodrigo Zurek Размещён: 06.08.2013 03:140 плюса
Какой тип сервера приложений вы используете? Если вы используете пассажир или единорога, вы можете иметь несколько рабочих процессов, которые могут обрабатывать одновременные запросы
Автор: usha Размещён: 06.08.2013 03:15Вопросы из категории :
- ruby-on-rails Как я могу "красиво" отформатировать вывод JSON в Ruby on Rails?
- ruby-on-rails Обновление хода сервера на Rails-приложении
- ruby-on-rails Изменения модели документа CouchDB?
- ruby-on-rails JRuby on Rails против Ruby on Rails, в чем разница?
- ruby-on-rails-3 Как исправить «У вас нет прав на запись в каталог / usr / bin» при установке Rails?
- ruby-on-rails-3 Rails3 получает текущее имя макета из вида
- ruby-on-rails-3 Рендеринг действия контроллера от другого контроллера
- ruby-on-rails-3 ActiveRecord ИЛИ запрос
- heroku проблема псевдонима столбца postgres
- heroku Упаковка предварительно скомпилированных двоичных файлов внутри драгоценного камня
- heroku Любые другие способы установки Heroku, кроме установки gem
- heroku Диаграмма Heroku Dyno / Worker Scaling
- concurrency Что такое состояние гонки?
- concurrency Что такое тупик?
- concurrency Что такое мьютекс?
- concurrency Безопасно ли получать значения из java.util.HashMap из нескольких потоков (без изменений)?
- delayed-job delayed_job - выполняет не обновленный код?
- delayed-job Как заставить пользователей создавать запланированные задачи в приложении rails, развернутом в Heroku
- delayed-job How to resolve deserialization error in delayed job?
- delayed-job Long running delayed_job jobs stay locked after a restart on Heroku