Уведомления

Группа в Telegram: @pythonsu

#1 Март 31, 2013 02:13:14

tibs
От:
Зарегистрирован: 2011-06-30
Сообщения: 57
Репутация: +  0  -
Профиль   Отправить e-mail  

Обертка для метода объекта

Хочу изменить поведение метода open у объекта opener, чтобы он открывал страницу до тех пор, пока эта операция не произойдет успешно. Подскажите как правильно сделать.

Сейчас реализовано так:

import urllib2, time
def open_link(link):
    global opener
    
    page = ''
    t = False
    while t == False:
        try:
            page = opener.open(link).read()
            t = True
        except Exception, e:
            print e
            time.sleep(5)
    return page
    
opener = urllib2.build_opener()
urllib2.install_opener(opener)



Отредактировано tibs (Март 31, 2013 11:46:25)

Офлайн

#2 Март 31, 2013 02:47:15

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Обертка для метода объекта

ну так у вас t = True происходит всегда, так как он находится в блоке finaly.
Наверное будет достаточно цикл проверять по if not page, да и обработку Exceptions правильно сделать, мало ли вдруг получите на вход не корректную ссылку и будет вам бесконечный цикл



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Март 31, 2013 07:13:12

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Обертка для метода объекта

> , чтобы он открывал страницу до тех пор, пока эта операция не произойдет успешно.

ну тогда сначала opener.open(link), а потом уже если всё ок, то делаем read()

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version