import random
class ExpiredTokenException(Exception):
pass
class external_http_request_interface:
def get_token(self):
return "some token"
def make_request(self, token, request):
if (random.randint(0, 5) < 3):
raise ExpiredTokenException("Your token has expired!")
return "Request result for: " + str(request)
http = external_http_request_interface()
token = http.get_token()
# Do some stuff with your token here...
attempts = 0
while (attempts < 10):
try:
result = http.make_request(token, "some request")
except ExpiredTokenException:
token = http.get_token()
continue
print(result)
break
aW1wb3J0IHJhbmRvbQoKY2xhc3MgRXhwaXJlZFRva2VuRXhjZXB0aW9uKEV4Y2VwdGlvbik6CiAgICBwYXNzCgpjbGFzcyBleHRlcm5hbF9odHRwX3JlcXVlc3RfaW50ZXJmYWNlOgogICAgZGVmIGdldF90b2tlbihzZWxmKToKICAgICAgICByZXR1cm4gInNvbWUgdG9rZW4iCgogICAgZGVmIG1ha2VfcmVxdWVzdChzZWxmLCB0b2tlbiwgcmVxdWVzdCk6CiAgICAgICAgaWYgKHJhbmRvbS5yYW5kaW50KDAsIDUpIDwgMyk6CiAgICAgICAgICAgIHJhaXNlIEV4cGlyZWRUb2tlbkV4Y2VwdGlvbigiWW91ciB0b2tlbiBoYXMgZXhwaXJlZCEiKQogICAgICAgIHJldHVybiAiUmVxdWVzdCByZXN1bHQgZm9yOiAiICsgc3RyKHJlcXVlc3QpCgoKaHR0cCA9IGV4dGVybmFsX2h0dHBfcmVxdWVzdF9pbnRlcmZhY2UoKQp0b2tlbiA9IGh0dHAuZ2V0X3Rva2VuKCkKCiMgRG8gc29tZSBzdHVmZiB3aXRoIHlvdXIgdG9rZW4gaGVyZS4uLgoKYXR0ZW1wdHMgPSAwCndoaWxlIChhdHRlbXB0cyA8IDEwKToKICAgIHRyeToKICAgICAgICByZXN1bHQgPSBodHRwLm1ha2VfcmVxdWVzdCh0b2tlbiwgInNvbWUgcmVxdWVzdCIpCiAgICBleGNlcHQgRXhwaXJlZFRva2VuRXhjZXB0aW9uOgogICAgICAgIHRva2VuID0gaHR0cC5nZXRfdG9rZW4oKQogICAgICAgIGNvbnRpbnVlCiAgICAKICAgIHByaW50KHJlc3VsdCkKICAgIAogICAgYnJlYWs=