当我们通过API查询时,我们的Splunk环境有时会抛出504错误,这已经有一段时间了。我们最近将连接器移到了我们拥有的hacky脚本上,以使用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循环时停止将这些调用愚蠢地包装起来。如果没有,那么是否可以从引发的异常中提取状态,并且至少能够以不同的方式处理不同的状态代码?
您可以尝试增加HTTP调用代码的超时,这应该可以解决或帮助解决此问题。
https://www.lifewire.com/504-gateway-timeout-error-explained-2622941