我有一个“healthchecker”程序,每10秒调用一个“prober”来检查服务是否正在运行。如果prober退出并返回代码0,healthchecker将认为测试的服务正常。否则,它会认为它不起作用。你知道吗
我无法更改healthchecker(我无法使它以更大的间隔进行检查,或者使用比派生进程并检查其退出代码更好的通信协议)。你知道吗
也就是说,我不想真的每10秒就检查一次服务,因为这太过分了。我只想每分钟都去调查一下。你知道吗
我的解决方案是让探测者将最后一个答案的“缓存”保持1分钟,然后真正探测这个缓存何时过期。你知道吗
这看起来很好,但考虑到程序必须退出(返回退出代码),我很难想出一个合适的方法来实现这一点。到目前为止,我最好的办法是在一个守护进程中转换prober(将缓存保存在内存中),并创建一个客户机来查询它并用它的响应退出,但这似乎太多的工作(以及处理线程等等)。你知道吗
另一种方法是使用SQLite/memcached/redis。你知道吗
还有其他想法吗?你知道吗
既然没有人真正提出任何建议,我就把我的想法放在这里。如果你需要一个例子让我知道,我会包括一个。你知道吗
最简单的方法是序列化一个包含系统运行状况和最后状态的字典时间。时间()已检查。在你的程序开始解开字典,检查时间,如果它小于60秒的时间间隔,退出。否则,像正常一样检查运行状况并缓存它(随时间)。你知道吗
相关问题 更多 >
编程相关推荐