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

2021-08-09 13:56:44 +08:00
 imes

做的事情:

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

目的:

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

方法:

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

求助:

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

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

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

https://www.v2ex.com/t/794616

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

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

© 2021 V2EX