Наша среда Splunk иногда выдает 504 ошибки, когда мы запрашиваем через API, что уже давно известно. Недавно мы переместили соединитель для использования Python SDK поверх хакерского скрипта, который у нас был. В нашем API, основанном на API, мы смогли отловить 504 ошибки, которые всплывают случайным образом, выполнить цикл и попытаться снова, когда они возникнут. С Python SDK лучшее, что я смог выяснить, это:
flag = True
while flag:
try:
job = self.service.jobs.(create|results|any jobs./job. call)(query, **kwargs_normalsearch)
flag = False
except binding.HTTPError:
print('Splunk 504 Error')
pass
pass
Но у этого есть много проблем, особенно потому, что, если появятся какие-либо другие ошибки, кроме всплывающего окна 504, этона самом деле указывают на реальную проблему, я собираюсь застрять в бесконечном цикле. Есть ли параметр или что-то для заданий / объекта задания, позволяющее игнорировать определенные ошибки HTTP? Я действительно хотел бы прекратить обернуть эти вызовы в глупые, пока True циклы. Если нет, то есть ли способ извлечь статус из возникшего исключения и, по крайней мере, иметь возможность обрабатывать разные коды состояния по-разному?