![](/img/trans.png)
[英]Powershell Invoke-WebRequest works but Python Requests does not
[英]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.