Python请求GET需要很长时间才能响应某些请求

时间:2016-07-06 01:23:42

标签: python performance get python-requests python-3.5

我使用Python requests get方法查询MediaWiki API,但收到响应需要花费大量时间。相同的请求通过Web浏览器非常快速地收到响应。我有同样的问题请求google.com。以下是我在Windows 10上的Python 3.5中尝试的示例代码:

response = requests.get("https://www.google.com")
response = requests.get("https://en.wikipedia.org/wiki/Main_Page")
response = requests.get("http://en.wikipedia.org/w/api.php?", params={'action':'query', 'format':'json', 'titles':'Labor_mobility'})

但是,我不会在检索其他网站时遇到此问题:

response = requests.get("http://www.stackoverflow.com")
response = requests.get("https://www.python.org/")

1 个答案:

答案 0 :(得分:3)

这听起来与服务器的基础连接存在问题,因为对其他URL的请求有效。这些是我想到的:

  • 服务器可能只允许特定的用户代理字符串

尝试添加无害的标题,例如:requests.get("https://www.example.com", headers={"User-Agent": "Mozilla/5.0 (X11; CrOS x86_64 12871.102.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.141 Safari/537.36"})

  • 服务器限制您的速度

等待几分钟,然后重试。如果这解决了您的问题,则可以通过添加time.sleep()来降低代码速度,以防止再次受到速率限制。

  • IPv6不起作用,但IPv4起作用

通过执行curl --ipv6 -v https://www.example.com进行验证。然后,与curl --ipv4 -v https://www.example.com比较。如果后者明显更快,则可能是您的IPv6连接有问题。检查here以获得可能的解决方案。

不能解决您的问题吗?

如果那不能解决您的问题,我还收集了其他一些可能的解决方案here