如何批量检查URL状态代码而不泛滥请求

时间:2018-07-18 09:34:23

标签: python python-requests

我需要不断检查许多URL返回的状态代码。同一域中最多可以有50,000个。

我担心这样做会冒大量请求泛滥的风险,并影响性能,这是不可能发生的。

我目前的解决方法是使用requests.head来最小化响应的大小,但是我不确定我需要知道哪些其他上下文:

  • 是否存在限制速率请求的最佳实践?
  • 如何最好地平衡执行时间?
  • 这是否足以确保在特定域中运行不会产生负面影响?

我一直在寻找类似的话题,但似乎找不到,所以很抱歉,如果在其他地方解决了这个问题。

谢谢

2 个答案:

答案 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)