Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用缓存的退出代码退出程序_Python_C_Caching - Fatal编程技术网

Python 使用缓存的退出代码退出程序

Python 使用缓存的退出代码退出程序,python,c,caching,Python,C,Caching,我有一个“healthchecker”程序,每10秒调用一个“prober”来检查服务是否正在运行。如果探测器退出时返回代码为0,healthchecker将认为测试的服务正常。否则,它认为它不起作用 我不能更改healthchecker(我不能让它以更大的间隔进行检查,或者使用比生成进程并检查其退出代码更好的通信协议) 也就是说,我不想每10秒就对服务进行一次真正的探测,因为这太过分了。我只是想每分钟都去调查一下 我的解决方案是让探测者将最后一个答案的“缓存”保持1分钟,然后在缓存过期时真正探

我有一个“healthchecker”程序,每10秒调用一个“prober”来检查服务是否正在运行。如果探测器退出时返回代码为0,healthchecker将认为测试的服务正常。否则,它认为它不起作用

我不能更改healthchecker(我不能让它以更大的间隔进行检查,或者使用比生成进程并检查其退出代码更好的通信协议)

也就是说,我不想每10秒就对服务进行一次真正的探测,因为这太过分了。我只是想每分钟都去调查一下

我的解决方案是让探测者将最后一个答案的“缓存”保持1分钟,然后在缓存过期时真正探测

这似乎很好,但考虑到程序必须退出(返回退出代码),我很难想出一个合适的方法来实现这一点。到目前为止,我的最佳选择是在一个守护进程中转换我的prober(将缓存保存在内存中),并创建一个客户机来查询它并带着它的响应退出,但这似乎太多工作(以及处理线程等等)

另一种方法是使用SQLite/memcached/redis


还有其他想法吗?

既然没有人真正提出任何建议,我就把我的想法放在这里。如果你需要一个例子,让我知道,我会包括一个


最简单的方法是序列化包含系统运行状况和上次检查的time.time()的字典。在你的程序开始时,解开字典,检查时间,如果它小于你的60秒时间间隔,退出。否则,请像正常情况一样检查运行状况并缓存它(随着时间的推移)。

这真的值得付出努力吗?每10秒检查一次是否使用了相应数量的系统资源?让一个额外的进程(或整个数据库系统)挂起进行缓存真的会更便宜吗?你能把数据写到一个文件中吗?@sth不幸的是,这个探测器必须可扩展到1000多台服务器,在这种情况下,这将成为一个问题problem@TheSoundDefense对但这似乎比使用SQLite更复杂。我同意@TheSoundDefense。最简单的方法是序列化包含系统运行状况和上次检查的time.time()的字典。在你的程序开始时,解开字典,检查时间,如果它小于你的60秒时间间隔,退出。否则,像正常一样检查运行状况并缓存它(随时间)。