【问题标题】:Python requests hangs on readPython 请求在读取时挂起
【发布时间】:2021-12-23 15:08:36
【问题描述】:

我正在使用 Python 3.7.3,我正在尝试获取 gif:

import requests
requests.get("https://track.hubspot.com", allow_redirects=True)

这段代码挂起,显然是无限期的。

import requests
requests.get("https://track.hubspot.com", allow_redirects=True, timeout=0.1)

此代码在读取时引发错误:ReadTimeout: HTTPSConnectionPool(host='track.hubspot.com', port=443): Read timed out. (read timeout=0.1)

如果我在浏览器中访问它,我成功地在目标上加载了 1x1 gif。 urllib3wget(命令行工具,不是 Python 库)也挂起。有没有办法使用 Python 获取地址而不会出现任意超时和错误?

【问题讨论】:

  • 使用 timeout=10 或其他方法有帮助吗?
  • 是的,超时导致它引发错误,但连接另一端(在 hubspot.com 端)的操作确实发生了。如果超时太短,我会得到一个 ConnectTimeout 并且另一端的操作不会发生。我不确定我可以安全地超时多短。 10 对生产来说肯定太长了。
  • 代码对我有用。
  • 嗯,谢谢@tdelaney!我尝试了一个新的 python 实例,但它仍然对我不起作用......
  • 也许它确实有速率限制,你必须等待。

标签: python python-requests http-get


【解决方案1】:

这对我有用response = requests.get('https://track.hubspot.com')
您应该考虑使用上下文管理器。

with requests.Session() as session:
    response = session.get("https://track.hubspot.com")

【讨论】:

  • 我看不出这对单个请求有何帮助。
  • 我不知道该告诉你们什么...我正在使用 Python 3.7.3,甚至上下文管理器方法对我来说仍然失败。很抱歉,我无法为您提供一致的最小损坏示例!
  • @tdelaney 可能不是,但我不确定有多少请求。另外,据我所知,使用一个有什么缺点吗?
  • @MarkC。如果有帮助,我正在使用 python 3.9.0
  • 很好,谢谢@phil
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-29
  • 2010-12-25
  • 2014-08-22
相关资源
最近更新 更多