У меня есть скрипт на python, который выполняет серию URL-вызовов с использованием urllib2.URL находится на http, но требует аутентификации.В настоящее время я пытаюсь запустить скрипт так, чтобы он сделал более 100 звонков.Каждый раз, когда я запускаю скрипт, некоторые вызовы завершаются с ошибкой с кодом 401, а некоторые проходят.Все звонки по одному и тому же URL с использованием одного и того же имени пользователя и пароля.(Каждый раз, когда я запускаю сценарий, это не те же вызовы, которые терпят неудачу, иногда первый вызов дает сбой, иногда он работает.)
Есть идеи, почему 401 может возникать непоследовательно?на экран выводится сообщение ...
Вот метод, который отвечает за вызов url:
def simpleExecuteRequest(minX, minY, maxX, maxY, type) :
url = 'http://myhost.com/geowebcache/rest/seed/mylayer.xml'
msgTemplate = """<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<seedRequest>
<name>mylayer</name>
<bounds>
<coords>
<double>%s</double>
<double>%s</double>
<double>%s</double>
<double>%s</double>
</coords>
</bounds>
<gridSetId>nyc</gridSetId>
<zoomStart>0</zoomStart>
<zoomStop>10</zoomStop>
<format>image/png</format>
<type>%s</type>
<threadCount>1</threadCount>
</seedRequest>
"""
message = msgTemplate%(minX, minY, maxX, maxY, type)
headers = { 'User-Agent' : "Python script", 'Content-type' : 'text/xml; charset="UTF-8"', 'Content-length': '%d' % len(message) }
passwordManager = urllib2.HTTPPasswordMgrWithDefaultRealm()
passwordManager.add_password(None, url, 'username', 'xxx')
authenticationHandler = urllib2.HTTPBasicAuthHandler(passwordManager)
proxyHandler = urllib2.ProxyHandler({})
opener = urllib2.build_opener(proxyHandler, authenticationHandler)
urllib2.install_opener(opener)
try :
request = urllib2.Request(url, message, headers)
response = urllib2.urlopen(request)
content = response.read()
print 'success'
except IOError, e:
print e
Иногда вывод будет выглядеть следующим образом ...
<urlopen error (10053, 'Software caused connection abort')>
success
success
<urlopen error (10053, 'Software caused connection abort')>
<urlopen error (10053, 'Software caused connection abort')>
...
При запуске через 1 минуту это может выглядеть следующим образом ...
success
<urlopen error (10053, 'Software caused connection abort')>
success
success
<urlopen error (10053, 'Software caused connection abort')>
На обоих запусках одинаковые серии входов для min / max x / y и типа были предоставлены в одном и том же порядке....