python: повторите X раз, если возникла исключительная ситуация, выйдите, если нет
Теперь он работает один раз, если подключен успешно, но если встречается исключение, он не повторяет попытки, как мне хотелось бы, просто выдает:
Will retry: [Errno 111] Connection refused
Он должен возвращать False, если все попытки не увенчались успехом, и True, если хотя бы одна из них вернула ответ
Кажется, есть что-то сложное с необходимостью 'while', например
for attempt in range(attempts) and while True
Вот мой код:
attempts = 10
for attempt in range(attempts):
try:
conn = httplib.HTTPConnection("server:80", timeout=5)
conn.request("GET","/url")
r = conn.getresponse()
except socket.error, serr:
print("Will retry: %s" % serr)
conn.close()
else:
print("OK")
finally:
return False
Я пробовал также:
for attempt in range(attempts):
while True:
try:
Тот же результат...
1 ответ
Попробуйте использовать счетчик и флаг внутри цикла while.
def funct():
flag = False
counter = 0
while True:
counter += 1
try:
conn = httplib.HTTPConnection("server:80", timeout=5)
conn.request("GET","/url")
r = conn.getresponse()
flag = True
break
except socket.error, serr:
print("Will retry: %s" % serr)
conn.close()
if counter>9:
break
return flag