V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
imes
V2EX  ›  问与答

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

  •  
  •   imes · 2021-08-09 13:56:44 +08:00 · 1041 次点击
    这是一个创建于 1202 天前的主题,其中的信息可能已经有所发展或是发生改变。

    做的事情:

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

    目的:

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

    方法:

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

    求助:

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

    9 条回复    2021-08-09 19:28:33 +08:00
    AoEiuV020
        1
    AoEiuV020  
       2021-08-09 14:10:47 +08:00   ❤️ 1
    15 分钟才改变一次的状态,这也值得纠结?显然每次存在硬盘里更稳定更方便,
    imes
        2
    imes  
    OP
       2021-08-09 14:20:35 +08:00 via Android
    @AoEiuV020 1# 因为是小脚本,性能开支都不大,就开始严重纠结症了。
    AoEiuV020
        3
    AoEiuV020  
       2021-08-09 14:27:18 +08:00   ❤️ 2
    @imes 这关键是一个服务常驻内存 15 分钟一点动作都没有的话你甚至应该搞个 watchdog 监控一下,顺便为了随时重启恢复状态应该同时把数据在硬盘也保存一份,
    实际上这压根就没有只保存在内存的选项,
    imes
        4
    imes  
    OP
       2021-08-09 14:37:19 +08:00
    @AoEiuV020 3# 了然了,谢谢!
    wellsc
        5
    wellsc  
       2021-08-09 14:38:50 +08:00
    这种需求 随便怎么搞
    yitingbai
        6
    yitingbai  
       2021-08-09 14:41:37 +08:00
    我的观点不一样, 放内存更方便, 就一个状态变量, 也不是非常有价值的数据, 丢就丢了. 连 1KB 都没有, 不值得写额外代码保存到硬盘, 也不值得给磁盘增加一个文件
    imes
        7
    imes  
    OP
       2021-08-09 16:25:23 +08:00 via Android
    @yitingbai 6# 确实,毕竟服务器稳定性一直很好,放在内存里面光靠 sleep 也不会有问题。主要还是纠结症晚期,总是忍不住在想万一出问题了怎么办,虽然这个脚本本身没有什么大不了的。
    echoechoin
        8
    echoechoin  
       2021-08-09 18:39:53 +08:00
    我喜欢写到 /var/log/做日志
    cpstar
        9
    cpstar  
       2021-08-09 19:28:33 +08:00
    反倒觉得坚决扔内存,搁硬盘那才是大炮打蚊子
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   928 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:14 · PVG 06:14 · LAX 14:14 · JFK 17:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.