Python 使用缓存的退出代码退出程序
我有一个“healthchecker”程序,每10秒调用一个“prober”来检查服务是否正在运行。如果探测器退出时返回代码为0,healthchecker将认为测试的服务正常。否则,它认为它不起作用 我不能更改healthchecker(我不能让它以更大的间隔进行检查,或者使用比生成进程并检查其退出代码更好的通信协议) 也就是说,我不想每10秒就对服务进行一次真正的探测,因为这太过分了。我只是想每分钟都去调查一下 我的解决方案是让探测者将最后一个答案的“缓存”保持1分钟,然后在缓存过期时真正探测 这似乎很好,但考虑到程序必须退出(返回退出代码),我很难想出一个合适的方法来实现这一点。到目前为止,我的最佳选择是在一个守护进程中转换我的prober(将缓存保存在内存中),并创建一个客户机来查询它并带着它的响应退出,但这似乎太多工作(以及处理线程等等) 另一种方法是使用SQLite/memcached/redisPython 使用缓存的退出代码退出程序,python,c,caching,Python,C,Caching,我有一个“healthchecker”程序,每10秒调用一个“prober”来检查服务是否正在运行。如果探测器退出时返回代码为0,healthchecker将认为测试的服务正常。否则,它认为它不起作用 我不能更改healthchecker(我不能让它以更大的间隔进行检查,或者使用比生成进程并检查其退出代码更好的通信协议) 也就是说,我不想每10秒就对服务进行一次真正的探测,因为这太过分了。我只是想每分钟都去调查一下 我的解决方案是让探测者将最后一个答案的“缓存”保持1分钟,然后在缓存过期时真正探
还有其他想法吗?既然没有人真正提出任何建议,我就把我的想法放在这里。如果你需要一个例子,让我知道,我会包括一个
最简单的方法是序列化包含系统运行状况和上次检查的time.time()的字典。在你的程序开始时,解开字典,检查时间,如果它小于你的60秒时间间隔,退出。否则,请像正常情况一样检查运行状况并缓存它(随着时间的推移)。这真的值得付出努力吗?每10秒检查一次是否使用了相应数量的系统资源?让一个额外的进程(或整个数据库系统)挂起进行缓存真的会更便宜吗?你能把数据写到一个文件中吗?@sth不幸的是,这个探测器必须可扩展到1000多台服务器,在这种情况下,这将成为一个问题problem@TheSoundDefense对但这似乎比使用SQLite更复杂。我同意@TheSoundDefense。最简单的方法是序列化包含系统运行状况和上次检查的time.time()的字典。在你的程序开始时,解开字典,检查时间,如果它小于你的60秒时间间隔,退出。否则,像正常一样检查运行状况并缓存它(随时间)。