使用python httplib定期REST调用失败

时间:2014-09-12 17:15:09

标签: python rest http

使用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对象。如果我错过了一些明显的东西,有人可以解决一些问题吗?感谢。

0 个答案:

没有答案