Что такое отложенная фоновая работа? Как это работает? - PullRequest
1 голос
/ 12 января 2011

Я использую Heroku для размещения небольшого приложения.Он запускает скребок, используя Mechanize и Nokogiri для каждого поискового запроса, и это занимает около 3 секунд.

Блокирует ли экран скребок кого-либо еще, кто хочет получить доступ к приложению в данный момент?Другими словами, он находится в режиме удержания только для текущего пользователя или для всех?

Ответы [ 3 ]

2 голосов
/ 12 января 2011

Определенно, поскольку динамометр является однопоточным, если он занят утилизацией, тогда другие запросы будут помещены в очередь до тех пор, пока динамо не освободится или не истечет время ожидания, если они будут зависать более 30 секунд.

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

Установите гем NewRelic, чтобы увидеть, что делает длина вашей очереди

Джон.

2 голосов
/ 20 января 2011

Если вас интересует система с полным сервисом, мы ищем бета-тестеров нашего приложения Heroku appstore SimpleWorker.com .Он тесно интегрирован в Heroku и предлагает ряд преимуществ перед DJ.

Это просто, как несколько строк кода, чтобы отправить свою работу в наше гибкое рабочее облако, и вы можете воспользоваться преимуществами массивной параллельной обработки, потому что мыне ограничивайте количество работников.

Стреляйте в меня, если вам интересно.

Чад

2 голосов
/ 12 января 2011

Если у вас есть только одна героиня динамо, то да, это тот случай, когда другим пользователям придется ждать в очереди.

Фоновые задания предназначены для случаев, подобных вашему, когда требуется выполнить тяжелую обработку. Процесс, выполняющий rails, не выполняет тяжелую работу заранее, вместо этого он запускает фоновую работу и быстро реагирует, освобождая себя для ответа на другие запросы.

Данные, обработанные фоновым заданием, просматриваются позже - возможно, через несколько запросов или всякий раз, когда задание выполнено, загружаются с помощью javascript.

...