Как мне обрабатывать длинные запросы на Rails App, чтобы другие пользователи не задерживались слишком долго?

ruby-on-rails ruby-on-rails-3 heroku concurrency delayed-job

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:13

1 плюс

Да, вам нужно больше dynos, специальные рабочие dynos, те, которые работают в фоновом режиме, вы можете проверить этот Railscast на отложенных заданиях, которые также могут помочь:

http://railscasts.com/episodes/366-sidekiq

Также вот краткое руководство по добавлению единорога и нескольких потоков в ваш бесплатный экземпляр heroku:

https://devcenter.heroku.com/articles/rails-unicorn

Вы делите свой динамо на два или более экземпляров, каждый из которых может обрабатывать разные запросы.

Автор: Rodrigo Zurek Размещён: 06.08.2013 03:14

0 плюса

Какой тип сервера приложений вы используете? Если вы используете пассажир или единорога, вы можете иметь несколько рабочих процессов, которые могут обрабатывать одновременные запросы

http://www.modrails.com/documentation/Users%20guide%20Apache.html#_passengermaxinstancesperapp_lt_integer_gt

Автор: usha Размещён: 06.08.2013 03:15
Вопросы из категории :
32x32