Python GET HTTP请求需要多次尝试才能成功

时间:2018-02-26 23:17:34

标签: python get python-requests

我有一行代码,用于向get()服务器发送http请求的代码:

json_data = requests.get(
        "http://"+ <host_ip> + <http_resource_path>,
        auth=HttpNtlmAuth('<Username>', '<Passwrd>'), headers={'host': host_DNS_name}).json()

现在,当我执行此代码时,它成功了,但我注意到它尝试了3次尝试(代码点击了网址3次并在第3次尝试中成功,第2次尝试导致401错误) 。这是我在执行此代码时在控制台上看到的内容:

http://<host-IP:80 "GET <http_resource_path> HTTP/1.1" 401 58
http://<host-IP:80 "GET <http_resource_path> HTTP/1.1" 401 341
http://<host-IP:80 "GET <http_resource_path> HTTP/1.1" 200 74

正如您每次都可以看到相同的URLcredentialsport number80}一样,它会尝试3次尝试成功(前2次尝试导致unauthorized access,但第3次尝试成功,参数相同)。这种多次尝试导致大约15秒的延迟(在第1次和第3次尝试之间)。现在我无法理解为什么在参数没有改变的情况下尝试3次尝试成功?我的代码中有什么东西可以解决这个问题和/或调试,或者是我试图访问的服务器中的问题?

1 个答案:

答案 0 :(得分:0)

服务器正在返回401响应,而您的问题并未说明您要连接的服务器,因此我们无法确定原因。这可能是因为您正在使用某些速率限制代码,但服务器可能由于多种原因而不允许前两个请求。

如果您可以控制服务器的代码,请查看源代码并查看处理您正在进行的请求的代码。另请查看适用于所有请求的代码,例如中间件。

如果您无法访问源代码,则必须向网站所有者询问原因。