команда open-uri open запускается в домене, против того же домена - PullRequest
0 голосов
/ 01 июля 2011

Я создал форму на веб-странице, которая позволяет пользователю вводить URL, и возвращается некоторая информация о CSS URL.Инструмент работает отлично, кроме одной проблемы, которую я заметил.

Когда я ввожу URL-адрес сайта, на котором размещен скрипт (тестируется локально, на промежуточном сервере и на рабочем сервере), команда open-uri 'open' возвращает Timeout :: Error.Теперь это не удивительно, я предполагаю, что что-то блокируется где-то вдоль линии, и в процессе запуска сценария и открытия текущего URL-адреса процессы становятся немного связанными.

ДляСсылка, вот метод, где происходит Таймаут:

 # loads the Nokogiri XML object if it hasn't already been loaded
 def site
   begin
     timeout(10) do
       @site ||= Nokogiri::HTML(open(url))
     end
   rescue Timeout::Error
     return nil
   end
 end

Мой вопрос: как мне разрешить сценарию «открывать» домен, на котором в данный момент выполняется сценарий?Нужно ли мне создавать другой поток или что-то еще для обработки этого конкретного аспекта моего инструмента, если так, как я могу гарантировать, что остальная часть моего сценария не будет запущена, пока я не получу что-то действительное от команды open?* Спасибо за любые предложения или советы по этому вопросу.

1 Ответ

0 голосов
/ 03 июля 2011

Интересно, попадешь ли ты в рекурсивный цикл?Вы видите повторяющиеся записи в журнале httpd, показывающие запросы для одного и того же сайта?

Если это так, вы можете захотеть замкнуть запросы к этому конкретному домену и предварительно заполнить переменную экземпляра @site, чтобы она провалилась.

...