<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

def keep_alive(self):
        '''
        Send a keep alive request periodically to make sure that the server
        is still alive. If not then try to reconnect.
        '''
        self.ssl_skt.settimeout(defaults.AUTH_KEEP_ALIVE_INTERVAL)
        while self.__up:
            try:
                log.debug('Sending keep-alive message to the server')
                self.ssl_skt.send(defaults.AUTH_KEEP_ALIVE)
            except socket.error:
                log.error('Unable to send keep-alive message to the server.')
                log.error('Re-init the SSL socket.')
                self.reconnect()
                log.debug('Trying to re-send the keep-alive message to the server.')
                self.ssl_skt.send(defaults.AUTH_KEEP_ALIVE)
            msg = self.ssl_skt.recv(len(defaults.AUTH_KEEP_ALIVE_ACK))
            log.debug('Received %s from the keep-alive server', msg)
            if msg != defaults.AUTH_KEEP_ALIVE_ACK:
                log.error('Received %s instead of %s form the auth keep-alive server',
                          msg, defaults.AUTH_KEEP_ALIVE_ACK)
                log.error('Re-init the SSL socket.')
                self.reconnect()
            time.sleep(defaults.AUTH_KEEP_ALIVE_INTERVAL)