数据写入文件和驻留在内存中,哪个更合适?

2021 年 8 月 9 日
 cmos

做的事情:

python (on Linux) 写了一个通过api获取实时降雨量的脚本。

目的:

当下雨状态改变,通过telegram bot推送消息,例如开始下雨了,或者停止下雨了都通知我一下。

方法:

每隔 15 分钟判断一下api反馈回来的降雨量数值,并和此前状态进行比较。现在有两个方案,一是写成systemd服务,把是否降雨1 or 0的状态一直留在内存里面,这个脚本一直运行,间隔 15 分钟通过sleep实现;二是把降雨状态写成文件放到硬盘里面,通过crontab或者systemd-timer每隔 15 分钟执行一次脚本,在非执行期间,程序不运行。

求助:

这两种是否存在可靠性差异?对于类似的小脚本,哪种普适性更好?

1648 次点击
所在节点    问与答
9 条回复
AoEiuV020
2021 年 8 月 9 日
15 分钟才改变一次的状态,这也值得纠结?显然每次存在硬盘里更稳定更方便,
cmos
2021 年 8 月 9 日
@AoEiuV020 1# 因为是小脚本,性能开支都不大,就开始严重纠结症了。
AoEiuV020
2021 年 8 月 9 日
@imes 这关键是一个服务常驻内存 15 分钟一点动作都没有的话你甚至应该搞个 watchdog 监控一下,顺便为了随时重启恢复状态应该同时把数据在硬盘也保存一份,
实际上这压根就没有只保存在内存的选项,
cmos
2021 年 8 月 9 日
@AoEiuV020 3# 了然了,谢谢!
wellsc
2021 年 8 月 9 日
这种需求 随便怎么搞
yitingbai
2021 年 8 月 9 日
我的观点不一样, 放内存更方便, 就一个状态变量, 也不是非常有价值的数据, 丢就丢了. 连 1KB 都没有, 不值得写额外代码保存到硬盘, 也不值得给磁盘增加一个文件
cmos
2021 年 8 月 9 日
@yitingbai 6# 确实,毕竟服务器稳定性一直很好,放在内存里面光靠 sleep 也不会有问题。主要还是纠结症晚期,总是忍不住在想万一出问题了怎么办,虽然这个脚本本身没有什么大不了的。
echoechoin
2021 年 8 月 9 日
我喜欢写到 /var/log/做日志
cpstar
2021 年 8 月 9 日
反倒觉得坚决扔内存,搁硬盘那才是大炮打蚊子

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.xtra.eu.org/t/794616

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX