더 정확하게 urllib2.HTTPError 오류가 발생하고 코드 필드가 401로 설정되면 아래에서 몇 가지 수정 된 코드를 볼 수 있습니다. 나는 당신의 일반적인 try/except 구조를 떠났지만, 정말로, 일반적인 except를 사용하지 말고, 당신이 기대할 수있는 것을 잡아라!
def get_unread_msgs(user, passwd):
auth = URL.HTTPBasicAuthHandler()
auth.add_password(
realm='New mail feed',
uri='https://mail.google.com',
user='%s'%user,
passwd=passwd
)
opener = URL.build_opener(auth)
URL.install_opener(opener)
try:
feed= URL.urlopen('https://mail.google.com/mail/feed/atom')
return feed.read()
except HTTPError, e:
if e.code == 401:
print "authorization failed"
else:
raise e # or do something else
except: #A general except clause is discouraged, I let it in because you had it already
return None
난 그냥, 여기 테스트를 완벽하게
예, 작동 작동합니다. 그러나 암호가 올바르지 않으면 중지됩니다. 예외를 throw하지 않습니다. 계속 처리 중입니다. feed = URL.urlopen ('https://mail.google.com/mail/feed/atom') –
네트워크 설정을 확인할 수 있습니다 (아마 401에 미쳐 버린 이상한 프록시 뒤에있을 수 있습니다). ?). 나는 여기에, 구글 피드, 올바른 사용자 이름과 잘못된 비밀 번호와 스니퍼 잘 작동, 그것을 테스트하지만 실패 무한한 처리에 가지 않습니다. – KillianDS