1

嗨 Stackoverflow 社区,

我想创建一个脚本,该脚本使用多线程在大量 URL(超过 30k 个虚拟主机)上为 HTTP 状态代码创建大量并行请求。

可以从托管网站的同一服务器执行请求。

我正在使用多线程 curl 请求,但我对得到的结果并不满意。完整检查 30k 主机需要一个多小时。

我想知道是否有人有任何提示或是否有更高效的方法来做到这一点?

4

2 回答 2

2

在测试了一些可用的解决方案之后,最简单最快的方法是使用 webchk

webchk 是使用 Python 3 开发的命令行工具,用于检查 URL 的 HTTP 状态代码和响应标头

速度令人印象深刻,输出很干净,它在大约 2 分钟内解析了 30k 个虚拟主机

https://webchk.readthedocs.io/en/latest/index.html

https://pypi.org/project/webchk/

于 2018-11-06T11:08:16.587 回答
0

如果您正在寻找使用 Python 发出 HTTP 请求的并行性和多线程方法,那么您可以从该aiohttp库开始,或者使用流行的requests包。多线程可以通过multiprocessing标准库中的 , 来完成。

下面是关于使用 aiohttp 客户端进行速率限制的讨论:aiohttp:速率限制并行请求

这是关于使用https://stackoverflow.com/a/27547938/10553976进行多处理的讨论requests

使其高性能是您实施的问题。请务必记录您的尝试并与您当前的实施进行比较。

于 2018-11-05T13:15:58.567 回答