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

标签 python performance get python-requests python-3.5

我正在使用 Python requests查询MediaWiki API的get方法,但需要很长时间才能收到响应。相同的请求通过 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/")

最佳答案

这听起来像是与服务器的底层连接存在问题,因为对其他 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 .

    关于Python请求GET需要很长时间才能响应一些请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38215148/

    相关文章:

    python - Numba @guvectorize([(float64[ :], int64)], '(n),()->(n)' ) IndexError: 列表索引超出范围

    python - 属性错误 : FUN instance has no attribute '__trunc__'

    python - strptime 默认为 1900

    Hyperledger Fabric 的性能测试

    php - Applescript 可以发送获取或发布请求吗?

    javascript - JavaScript OOP 中什么时候需要使用 "get"关键字

    python - 加载环境以运行 Python 脚本的成本是多少?

    performance - Clojure 递归函数中的大型绑定(bind)会损害性能吗?

    performance - Spark 中的低性能 reduceByKey()

    javascript - 如何检查fancybox打开与否