<snip /> >> I'm not sure what you're exactly doing here, or what you're getting, >> but I did get curious and dug around urllib2.py. Apparently, there is >> a hardcoded 5 retries before the authentication really fails. So any >> stack trace would be the normal stack trace times 5. Not the 30 you >> mentioned, but annoying enough anyway (I don't see how it would fail >> for every element in the loop though. Once it raises an exception, >> the program basically ends). > > It never throws an exception. Or, if it does, something about the way > I'm calling suppresses it. IOW, I can put in a bogus credential and > start the script and sit here for 5 minutes and see nothing. Then ^C > and I get a huge stacktrace that shows the repeated calls. After the > timeout on one element in the list, it goes to the next element, times > out, goes to the next.
Ok, now I had to try and recreate something myself. So my processData is: def processData(f): global overview_url overview_url = baseurl + f getData(authHeaders) (f being a filename, out of a list of many). Other code same as yours. It definitely throws a 401 exception after 5 retries. No time-outs, no long waits. In fact, a time-out would to me indicate another problem (it still should throw an exception, though). So, unless you're catching the exception in processData somehow, I don't see where things could go wrong. I assume you have no problem with correct credentials or simply using a webbrowser? >> I don't know why it's hard-coded that way, and not just an option >> with a default of 5, but that's currently how it is (maybe someone >> else on this list knows?). > > I don't know, but even if I could set it to 1, I'm not helped unless > there's a way for me to make it throw an exception and exit the loop. > >> If that's what you're finding, perhaps the quickest way is to >> subclass urllib2.HTTPBasicAuthHandler, and override the >> http_error_auth_reqed method (essentially keeping it exactly the >> same apart from the hard-coded 5). > > Now there's a challenge! ;-) It'd be straightforward, but not solve your current problem, I'm afraid. _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor