Ruby mod_passenger время ожидания процесса - PullRequest
3 голосов
/ 23 сентября 2011

Несколько Ruby-приложений, с которыми я долго работал, зависали на медленных вызовах, в результате чего процессы для резервного копирования на машине в конечном итоге требовали перезагрузки.Существует ли в Passenger быстрый и простой способ ограничить время выполнения для одного вызова Apache.

В PHP, если процесс превышает значение максимального времени выполнения в php.ini, процесс возвращает ошибку ApacheСервер продолжает весело подключаться.

1 Ответ

0 голосов
/ 28 сентября 2011

Я бы посмотрел на исправление приложения. Отрезание запросов на уровне веб-сервера - это скорее вспомогательное средство, а не решение основной проблемы, которая заключается в сбоях запросов, так или иначе. Если приложение Ruby зависит от другой службы, для которой истекло время ожидания, вы можете исправить код следующим образом, используя библиотеку timeout.rb:

require 'timeout'
status = Timeout::timeout(5) {
  # Something that should be interrupted if it takes too much time...
}

Это позволит коду «сдаться» и корректно закрыть запрос при необходимости.

...