Как заблокировать этот код с помощью Net :: HTTP в ruby?

Вот URL

http://192.168.1.2:1218/?name=verify_code_string_queue&opt=get&auth=verify_code_string_queue

Он вернет строку или код состояния, такой как SQS_GET_END

Теперь мне нужно разбить цикл, когда url возвращает строку или блокирует.

Вот мой код

require 'net/http'
require 'open-uri'
loop do
  codeText = open("http://192.168.1.2:1218/?name=verify_code_string_queue&opt=get&auth=verify_code_string_queue") do |repo|
    repo.read
  end
  if codeText != "SQS_GET_END"
    break
  end
end

Но это не работает, вывод не может назначить запрошенный адрес - connect (2) (Errno :: EADDRNOTAVAIL). Скажите, пожалуйста, как это решить, спасибо

0
nl ja de
Если это не хост, над которым вы работаете, есть 192.168.1.2 доступный от вашего хоста?
добавлено автор Anand Shah, источник
В чем ваш вопрос, точно? Вы хотите знать, почему вы получаете ошибку EADDRNOTAVAIL, или вы хотите «поймать» ошибку и продолжить цикл?
добавлено автор rdvdijk, источник
Проверьте этот вопрос и его ответы: stackoverflow.com/questions/ 3886506/& hellip;
добавлено автор rdvdijk, источник
Ананд, я могу достичь 192.168.1.2.
добавлено автор Zhurong, источник
rdvdijk, я хочу знать причину, по которой я получаю ошибку EADDRNOTAVAIL.
добавлено автор Zhurong, источник
да, я проверил URL, который вы мне дали, но для меня это выглядит бесполезно, спасибо в любом случае.
добавлено автор Zhurong, источник

1 ответы

Проблема в том, что вы делаете слишком много запросов за короткое время. Это приведет к ошибке Errno :: EADDRNOTAVAIL . Вы можете добавить sleep в цикле, чтобы ограничить количество сделанных вами запросов.

Что-то вроде этого:

require 'net/http'
require 'open-uri'
loop do
  codeText = open("http://192.168.1.2:1218/?name=verify_code_string_queue&opt=get&auth=verify_code_string_queue") do |repo|
    repo.read
  end
  if codeText != "SQS_GET_END"
    break
  end
  sleep 1 # <= sleep for one second
end
0
добавлено
Не стесняйтесь принять этот ответ :)
добавлено автор rdvdijk, источник
да, это все, спасибо, это работает.
добавлено автор Zhurong, источник
pro.ruby
pro.ruby
1 181 участник(ов)

Язык программирования Ruby Additional docs: https://rubyreferences.github.io/rubyref/ Invite: https://telegram.me/joinchat/Be4rsT2NuB3CyJaF26j1kA Кто хочет компилировать: @crystal_ru (его синтаксис основан на Ruby) Участник @proDOT

Ruby, Rails, Hanami | dry-rb
Ruby, Rails, Hanami | dry-rb
1 180 участник(ов)

https://telegram.me/rubyjob - Ruby Job По вопросам - @eugene_shved

Ruby School .us
Ruby School .us
1 045 участник(ов)

Чат-болталка для учеников руби-школы и не только. Правила: https://telegra.ph/Pravila-chata-Rubi-shkoly-03-13

Random Ruby Chat
Random Ruby Chat
589 участник(ов)

Правила публикации вакансий: https://t.me/codenamecrud/60865

Rubyata
Rubyata
333 участник(ов)

Коммюнити Ruby и Ruby On Rails Флуд не приветствуются. Вакансии можно публиковать только и ТОЛЬКО по пятницам с хештегом #вакансия.

Ruby Talks
Ruby Talks
236 участник(ов)

Национальная Флеймотека

RubyRush
RubyRush
189 участник(ов)

rubyrush.ru программирование для самых новичков