影刀RPA 批量操作的断点记录与续跑方案

📅 2026/7/16 0:28:33
影刀RPA 批量操作的断点记录与续跑方案
影刀RPA 批量操作的断点记录与续跑方案作者林焱什么情况用这个处理5000条数据到第3891条时流程中断了。你重启流程——从头开始。前3891条白跑了还要花同样的时间重新处理。更糟的是前面已经提交到系统的数据没法撤回重复处理会导致重复提交。这就是为什么需要断点续跑——不是从头开始而是从上次中断的地方继续。店群矩阵自动化突破运营极限怎么做文件断点importjson,os CHECKPOINT_FILED:/rpa_checkpoint.jsondefsave_checkpoint(index,contextNone):保存断点state{last_index:index,timestamp:datetime.now().isoformat()}ifcontext:state[context]contextwithopen(CHECKPOINT_FILE,w)asf:json.dump(state,f)defload_checkpoint():读取断点ifos.path.exists(CHECKPOINT_FILE):withopen(CHECKPOINT_FILE,r)asf:returnjson.load(f)return{last_index:0}# 使用checkpointload_checkpoint()startcheckpoint[last_index]itemsload_items()foriinrange(start,len(items)):try:process(items[i])save_checkpoint(i1)# 每处理完一条就保存except:# 中断时记录断点下次从这里继续save_checkpoint(i)raise数据库断点defsave_checkpoint_db(db_path,process_name,last_id):数据库断点——适合多机器共享connsqlite3.connect(db_path)conn.execute( CREATE TABLE IF NOT EXISTS checkpoint ( process TEXT PRIMARY KEY, last_id TEXT, updated_at TEXT ) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6014d7a19809434aa70b3313f6ed1c4f.png#pic_center) )conn.execute(INSERT OR REPLACE INTO checkpoint VALUES (?, ?, ?),(process_name,last_id,datetime.now().isoformat()))conn.commit()conn.close()有什么坑坑一断点记录的数据已经被修改现象断点说处理到第100条但前100条的数据在流程中断后被系统自动更新了。解决断点记录的是成功处理完的最后一条的标识不是正在处理的这条。temu店群自动化报活动案例坑二断点文件损坏现象断点文件写了一半下次读出来是乱码。解决先写临时文件成功后再替换原文件withopen(CHECKPOINT_FILE.tmp,w)asf:json.dump(state,f)os.replace(CHECKPOINT_FILE.tmp,CHECKPOINT_FILE)坑三多条流程共用断点文件冲突解决断点文件名加流程名区分checkpoint_filefD:/rpa_ckpt_{process_name}.json总结断点续跑的性价比极高——3行代码保存加载跳转就能让你从从头跑一遍变成从断点继续。每处理完一条数据就更新断点这是最保险的策略。