今天在查询一个列表的时候,突然发现列表由于之前压测导致几万条脏数据积累。导致找一个数据比较麻烦,由于项目没有提供批量删除的功能,所以想了个办法通过接口把数据挨个删除。
思路如下:先去请求分页列表,然后解析数据,通过请求删除接口去一条一条的删除。
虽然比较简单,但是几万条数据还是耗费了比较长的时间,中间进行了一些优化,所以分成了好几个版本来完成。
第一版:串行请求
脚本如下:
public static void main(String[] args) {
def base = getBase()
def manager = new TeacherManager(base)
3.upto(1000) {
def list = manager.verifyList(it)
list.getJSONObject("data")?.getJSONArray("list").each { x ->
manager.verify(x.id, x.tel)
}
}
allOver()
}
复制代码
查询列表和删除记录的方法如下:
public JSONObject verifyList(int page = 3) {
String url = TeacherManagerApi.VERIFY_LIST;
JSONObject params = getParams();
params.put("page", page);
params.put("page_size", 50);
JSONObject r