繁体   English   中英

Python request.get()与Powershell Invoke-WebRequest -Uri

[英]Python requests.get() VS Powershell Invoke-WebRequest -Uri

我正在测量网站的页面加载时间。 我使用了Python requests.get(url)方法,该方法有时会给我带来巨大的响应时间(超过12秒)。 但是当我尝试使用PowerShell Invoke-WebRequest -Uri ,它永远不会超过1秒。

我想知道这两种方法之间的区别是什么,最好的方法是什么。

蟒蛇:

r = requests.get(url)
r.elapsed.total_seconds() 

电源外壳:

$result1 = Measure-Command { $request = Invoke-WebRequest -Uri $url }
$result1.TotalMilliseconds

我确实为google.com尝试了两者

$result1 = Measure-Command { $request = Invoke-WebRequest -Uri "http://google.com" }
$result1.TotalMilliseconds

结果是635

我尝试了另一种执行时间的方法:

import requests
import time
start = time.time()
r = requests.get("http://google.com")
print(" %s seconds" % (time.time() - start))

结果:0.4560821056365967秒

我尝试过print(r.elapsed.total_seconds())也有类似的结果

import requests
r = requests.get("http://google.com")
print(r.elapsed.total_seconds())

我没有发现您所说的巨大差异,在随后的执行中,这些值非常相似

  • Windows中有一个称为dns缓存的东西,当您模拟对URL的调用时,powershell将使用它们。

  • 示例:假设x.company.com是您尝试访问的URL。 当您使用invoke-webrequest时,它将解析dns缓存中的地址。

  • 刷新缓存并查看差异。 您将在同一时间看到Invoke- webrequest和python的request.get(url)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM