批量重放http请求
场景: 有一些下游的http请求,由于应用程序配置失误,导致应用程序没有正确处理,现在从nginx上过滤出来这些请求,数量有百万个,怎么快速将这些重新请求一遍了?
方式1: shell脚本
#!/bin/bash
while read -r i
do {
curl -s --connect-timeout 2 "$i"
} &
#执行循环丢进后台创建进程
done < file.txt
可以通过split 将大文件分割为小文件,分多台机器处理会更快
方式2:python 脚本
一般来说,python不太适合这种高并发请求的场合。
一般我们熟悉的requests ,但是 requests是同步的,他会等待上一个请求完成,才开始下一个。所以,这个速度也不会提升上去。
python3.5之后,多了一个asyncio模块,比较适合我们的场景。
#/usr/bin/python
import aiohttp
import asyncio
import redis
import redis_lock
'''
python3.6+
pip install aiohttp asyncio redis python-redis-lock
'''
async def get(url):
async