【发布时间】: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可解决此问题。此外,请求不会失败,它会通过,只是非常慢(出于某种原因)。 -
遇到同样的问题,我使用的是网络上的实际服务器,而不是本地主机...