如何批量检查URL状态码而不淹没请求

2024-05-19 20:12:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个要求,不断检查,由许多网址返回的状态码。在同一个域上最多可以有50000个。你知道吗

我担心这样做会导致请求充斥整个站点,并影响性能,而这是不可能发生的。你知道吗

我目前的方法是使用requests.head来最小化响应的大小,但是我不确定我还需要注意哪些额外的上下文:

  • 对于速率限制请求是否有最佳实践?你知道吗
  • 这与执行时间的最佳平衡是什么?你知道吗
  • 这是否足以确保跨特定域运行此操作不会产生负面影响?你知道吗

我已经找过类似的话题,但似乎找不到这个,所以道歉,如果这是解决其他地方。你知道吗

谢谢


Tags: 方法站点速率状态地方时间性能requests
2条回答

没有通用的最佳实践来限制对web服务器的请求速率。所有命中web服务器的web请求都会在一定程度上影响该服务器的性能。你知道吗

特定web服务器可以处理的请求数完全取决于web框架、硬件和API方法中代码的复杂性等因素。如果您查看一下TechEmpower benchmarks的一个简单的{"message":"Hello, World!"}响应,您会发现这可能会有很大的变化。你知道吗

这只是为了确保服务器没有黑名单我认为所有的请求都来自同一个地方,如果这是你的意图之一。它仍然会淹没服务器,但通过试图欺骗使其认为请求不是来自同一个地方。有时我也会在vpn之间切换以拥有不同的ip。你知道吗

这是使用假用户代理的一个片段:

from fake_useragent import UserAgent
ua1 = UserAgent()
randomHeader = {'User-Agent':str(ua1.random)}
page = requests.get(restListLink, randomHeader)

如果您不关心在请求之间设置延迟,那么您也可以尝试在请求之间添加随机延迟机制。对于延迟,您可以检查睡眠功能!你知道吗

import time
time.sleep(0.100)

相关问题 更多 >