Я опрашиваю конечную точку API, используя цикл while, который проверяет, возвращает ли метод .get () в JSON значение None:
while requests.get(render_execution_url, headers=headers).json().get('finalized_at') is None:
status = requests.get(render_execution_url, headers=headers).json().get('status')
status_detail = requests.get(render_execution_url, headers=headers).json().get('status_detail')
logger.info("status for {} is {}. detailed status is {}".format(render_execution_url, status, status_detail))
Идея в том, что мы продолжаем опрашиватьконечная точка, пока не будет заполнено значение «finalized_at».
К сожалению, мы периодически получаем сбои, когда JSON вообще не существует:
File "/usr/lib/python2.7/json/__init__.py", line 339, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.7/json/decoder.py", line 364, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python2.7/json/decoder.py", line 382, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
Я пытался использовать декоратор повторов наметод (см. ниже для синтаксиса декоратора), но он, кажется, не выполняет повторных попыток, когда я столкнулся с этой ошибкой.
@retry(stop_max_attempt_number=7, wait_fixed=10000)
Есть ли изящный, Pythonic способ справиться со случаем, когда JSONне существует (то есть, чтобы повторить попытку через некоторое время)?