Heroku部署Python bot时CSV与TXT日志文件的存储方案咨询
Heroku部署Python Bot的非数据库持久化文件存储方案
Heroku dyno的临时文件系统会在实例重启、部署、休眠时清空所有本地写入的文件,结合你需要手动编辑CSV、不想接入数据库的需求,以下是几个可直接落地的方案:
方案1:对象存储服务(最通用选项)
- 运行逻辑:bot启动时主动从对象存储桶拉取最新的CSV文件到本地临时目录,运行过程中产生的TXT日志、CSV数据更新,在程序退出前/定时回传到对象存储桶覆盖旧文件
- 适配需求的优势:
- 所有对象存储服务商的控制台都支持直接下载、上传文件,你需要手动修改CSV时,直接下载修改完再上传覆盖即可,全程无需操作数据库
- 小体积文件存储成本极低,大多服务商对10GB以内的存储量每月都有免费额度,即使超出后续费成本也很低
- Python侧有成熟的第三方SDK对接,只需要增加十几行读写代码,改造成本极低
- 日志文件可按运行日期、批次归档存储,方便后续回溯历史运行数据
- 代码改动示例:只需引入对应服务商的SDK,比如对接S3兼容对象存储时使用
boto3库,在原有逻辑的首尾增加拉取、上传文件的逻辑即可,原有文件读写逻辑不需要修改
方案2:Heroku附加持久化存储卷
- 你可以在Heroku的附加组件市场选择兼容的持久化卷服务,绑定到你的dyno后相当于给实例挂载了一块不会被清空的磁盘,直接将CSV、日志的存储路径指向挂载的卷目录即可
- 优势:原有代码零改造,完全保留你原本写本地文件的逻辑;需要编辑CSV时通过存储卷的控制台直接下载、上传文件,或者用配套CLI工具操作即可
- 注意:免费额度的存储卷容量大多在1-5GB,超出容量只需支付少量扩容费用
方案3:在线文档/网盘对接(适合小体积CSV)
- 如果你的CSV文件体积在10MB以内,可将CSV存为支持API读写的在线表格,bot运行时通过API读取表格内容,运行结束后将更新的数据回写到在线表格,TXT日志同步上传到对应网盘目录
- 优势:需要修改CSV时直接在在线表格中编辑即可,无需下载上传操作,门槛更低
内容的提问来源于stack exchange,提问作者fleshstorm
相关产品推荐
相关产品推荐

