Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Web
  • » Подскажите, как побороть urllib2.URLError: <urlopen error [RSS Feed]

#1 Апрель 13, 2010 00:22:12

sinus
От:
Зарегистрирован: 2010-04-11
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите, как побороть urllib2.URLError: <urlopen error

Доброго дня всем.
пытаюсь написать скрипт, который бы менял значение динамического IP в файлах конфигурации BIND под WinXP.
Споткнулся на ошибке - при пропадании ADSL более полуминуты - скрипт останавливается по timeout, выдавая сообщение urllib2.URLError: <urlopen error…
Подскажите, как изменить код, чтобы при пропадании связи скрипт писал в лог сообщение и шел на новый круг опроса после запланированной паузы?

# начинаем цикл проверки внешнего ip
while True:
bind_reload = 0

# запрашиваем наш внешний IP
strURL = 'http://api.wipmania.com/'
f_url = urllib2.urlopen(urllib2.Request(strURL))
response = f_url.read()
outerIP = response.split("<br>")[0] # запомнили значение внешнего ip
f_url.close()
#
print ("Внешний ip " + outerIP)# отладочное

# читаем из файла ip предыдущего цикла
f_old_ip = open("data_ip.txt", "r")
old_ip=f_old_ip.read()
f_old_ip.close()
#
print ("записанный в файле ip: " + old_ip)# отладочное
#------------------------------------------
# сравниваем значения ip
if outerIP == old_ip:
print 'совпали'# отладочное
print (time.strftime(segodn))# отладочное
# пишем в лог о совпадении
f_log = open("storozh_ip.log", "a")
f_log.write(time.strftime(d_t) + outerIP + ' :: OK\n')
f_log.close()
# пауза 15 сек
time.sleep(15)
continue
#---------------------------------------



Офлайн

#2 Апрель 13, 2010 09:24:53

nuklea
От:
Зарегистрирован: 2009-12-05
Сообщения: 51
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите, как побороть urllib2.URLError: <urlopen error

Офлайн

#3 Апрель 13, 2010 09:59:12

sinus
От:
Зарегистрирован: 2010-04-11
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите, как побороть urllib2.URLError: <urlopen error

nuklea
http://docs.python.org/tutorial/errors.html
За ссылку спасибо, таких листингов в сети нашел уже немало, да вот в том то и дело, что не соображу, как это связать с тем кодом, который я привел…

Пробовал запихать весь этот блок кода в конструкцию вида:

while True:
try:
[
Block koda
]
break
except ValueError:

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

Причем все остальное уже сделано, застрял на обработке ошибки…



Отредактировано (Апрель 13, 2010 10:00:34)

Офлайн

#4 Апрель 13, 2010 10:01:34

nuklea
От:
Зарегистрирован: 2009-12-05
Сообщения: 51
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите, как побороть urllib2.URLError: <urlopen error

try:
f_url = urllib2.urlopen(urllib2.Request(strURL))
except urllib2.URLError:
print('log log log')
continue # возвращаемся к while



Офлайн

#5 Апрель 13, 2010 10:10:13

sinus
От:
Зарегистрирован: 2010-04-11
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите, как побороть urllib2.URLError: <urlopen error

nuklea
try:
f_url = urllib2.urlopen(urllib2.Request(strURL))
except urllib2.URLError:
print('log log log')
continue # возвращаемся к while
Ага, не весь блок, а только обращение к урлу…
Тогда значит паузу еще одну перед continue вставить…

Попробую, спасибо…



Отредактировано (Апрель 13, 2010 10:12:10)

Офлайн

#6 Апрель 13, 2010 19:03:20

sinus
От:
Зарегистрирован: 2010-04-11
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите, как побороть urllib2.URLError: <urlopen error

Все получилось, благодарю.
Уже пять часов скрипт стабильно работает в качестве системного сторожа для BINDа .
Надеюсь и дальше будет без сбоев.

Еще раз спасибо.



Офлайн

  • Начало
  • » Web
  • » Подскажите, как побороть urllib2.URLError: <urlopen error[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version