我需要不断检查许多URL返回的状态代码。同一域中最多可以有50,000个。
我担心这样做会冒大量请求泛滥的风险,并影响性能,这是不可能发生的。
我目前的解决方法是使用requests.head
来最小化响应的大小,但是我不确定我需要知道哪些其他上下文:
我一直在寻找类似的话题,但似乎找不到,所以很抱歉,如果在其他地方解决了这个问题。
谢谢
答案 0 :(得分:0)
没有用于限制对Web服务器的请求速率的通用最佳实践。命中Web服务器的所有Web请求都将在一定程度上影响该服务器的性能。
特定Web服务器可以处理的请求数量完全取决于API方法中的Web框架,硬件和代码复杂性等因素。如果您查看TechEmpower benchmarks来获得简单的{"message":"Hello, World!"}
响应,就会发现这种变化可能会很大。
答案 1 :(得分:0)
这只是为了确保服务器也不会将我列入黑名单,因为如果这也是您的意图之一,那么请求都来自同一个地方。它仍然会淹没服务器,但会通过欺骗使其认为请求不是来自同一地点而来。有时候,我还会在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)