Python如何实现跨脚本运行持久保存自增Operation ID值
跨执行周期自增Operation ID实现方案
内存中定义的变量会在脚本进程退出后自动回收,要实现ID值跨运行持久化接续,最轻量化的方案是用本地独立文件存储每次运行结束后的最终ID值,无需引入第三方依赖,逻辑稳定可靠。
实现逻辑
- 脚本启动阶段优先读取本地存储文件中的ID值作为初始值,若文件不存在或内容损坏,则使用预设的初始值200
- 执行业务遍历逻辑时按原有规则完成ID自增
- 所有业务逻辑执行完成后,将本次运行得到的最终ID值写回存储文件,供下次脚本启动读取
可直接复用的代码
import os # 配置项 ID_SAVE_PATH = "last_oper_id.txt" DEFAULT_INIT_ID = 200 # 初始化ID值 if os.path.exists(ID_SAVE_PATH): try: with open(ID_SAVE_PATH, "r", encoding="utf-8") as f: idOperacion = int(f.read().strip()) except (ValueError, PermissionError): # 文件内容非法、无读取权限时回退到默认初始值 idOperacion = DEFAULT_INIT_ID else: idOperacion = DEFAULT_INIT_ID # 原有业务遍历逻辑 for i in range(len(trx.index)): idOperacion += 1 # 此处替换为实际使用idOperacion的业务代码 print(idOperacion) # 执行完成后持久化最新ID值 with open(ID_SAVE_PATH, "w", encoding="utf-8") as f: f.write(str(idOperacion))
补充说明
- 单脚本串行执行场景下该方案完全可用,不会出现ID重复问题;如果存在多进程/多线程同时调用该脚本的场景,需要额外增加文件锁逻辑避免读写冲突
- 存储ID的文本文件如果被误删,脚本下次启动会自动从默认值200开始计数,不会抛出异常中断运行
- 如果后续需要关联更多ID对应的业务属性,可以将存储介质替换为SQLite等轻量数据库,核心读写逻辑不变
内容的提问来源于stack exchange,提问作者Lucas Peck
相关产品推荐
相关产品推荐

