使用REST调用监视服务器心跳。我每隔30秒定期调用一次REST api。
HEARTBEAT_URI='/heartbeat'
class HearBeatCheck:
"""
Has other code
"""
@staticmethod
def check_heartbeat(host, port, username, password, timeout=60):
http_connection = httplib.HTTPConnection(host,port,timeout=timeout)
http_connection.request('GET', HEARTBEAT_URI, headers={'username':username,
'password':password})
response = http_connection.getresponse()
response.read()
if response.status in [200, 201, 202, 203, 204, 205, 206]:
return True
else:
return False
现在,当我每隔30秒进行一次调用以保持服务停止(心跳api会返回500或其他一些代码)错误我得到使用默认超时值的是CannotsendRequest错误。如果我修改周期性间隔以每60秒进行一次调用,则会出现BadStatusLine错误。
现在我理解了由于没有读取响应并重用相同的http连接对象而引发了CannotSendRequest,但在这种情况下,我将超时设置为高于轮询间隔,并且每次定期调用时都会使用新的http_connection对象。如果我错过了一些明显的东西,有人可以解决一些问题吗?感谢。