【问题标题】:Python requests library is very slow on WindowsPython 请求库在 Windows 上非常慢
【发布时间】:2020-04-17 17:45:03
【问题描述】:

此问题发生在 Windows 10 上(我知道这一点,因为它在 Mac OS 上不存在)。

每当您向某个端点发出类似以下的简单请求时,它在 Windows 上的速度非常慢,而在 Mac OS 上几乎是即时的。

import requests
requests.get('/user/get/' + str(current_user.id))

在 Windows 上大约需要 3 秒,而在 Mac OS 上几乎是瞬间完成。

通过使用一些简单的日志记录,我发现 urllib3(它是请求的底层库)在建立新的 http 连接时需要很长时间。这是目前的痛点,我不知道如何解决这个问题。

DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): localhost:5004

修复 1 失败:

我从this answer 尝试了以下操作,但它不起作用。

import requests

session = requests.Session()
session.trust_env = False

r = session.get('/user/get/' + str(current_user.id))

我也从同一个答案中尝试了以下方法,但它不起作用。

os.environ['NO_PROXY'] = 'localhost'

修复失败 2:

我尝试了第二个supposed fix,但也没有用。

import requests

proxies = {
  "http": None,
  "https": None,
}

r = requests.get('/user/get/' + str(current_user.id), proxies=proxies)

现在..

这让我没有答案,也没有可用的修复方法。有人知道为什么这是个问题吗?

【问题讨论】:

  • DNS 有问题吗?有时代码想要解析localhost 或其他东西,如果配置不当,它需要很长时间才能失败。 (幸好没有 Windows10 经验。)
  • @tripleee 是的,我刚刚发现了问题!看我的回答。将 localhost 更改为 127.0.0.1 可解决此问题。此外,请求不会失败,它会通过,只是非常慢(出于某种原因)。
  • 遇到同样的问题,我使用的是网络上的实际服务器,而不是本地主机...

标签: python python-requests


【解决方案1】:

我发现这是来自 this github issue 的 DNS 问题。如答案中所述,您必须将localhost 更改为127.0.0.1,这不是请求问题。

【讨论】:

    猜你喜欢
    • 2015-07-11
    • 1970-01-01
    • 2010-12-17
    • 2020-01-17
    • 2017-02-14
    • 1970-01-01
    • 2018-06-29
    • 2015-06-06
    • 1970-01-01
    相关资源
    最近更新 更多