code: def loop_misc(self):
          
          if self._sock is None and self._ssl is None:
              return MQTT_ERR_NO_CONN
  
          now = time.time()
          self._check_keepalive()
          if self._last_retry_check+1 < now:
              # Only check once a second at most
              self._message_retry_check()
              self._last_retry_check = now
  
          if self._ping_t > 0 and now - self._ping_t >= self._keepalive:
              # client->ping_t != 0 means we are waiting for a pingresp.
              # This hasn't happened in the keepalive time so we should disconnect.
              if self._ssl:
                  self._ssl.close()
                  self._ssl = None
              elif self._sock:
                  self._sock.close()
                  self._sock = None
  
              self._callback_mutex.acquire()
              if self._state == mqtt_cs_disconnecting:
                  rc = MQTT_ERR_SUCCESS
              else:
                  rc = 1
              if self.on_disconnect:
                  self._in_callback = True
                  self.on_disconnect(self, self._userdata, rc)
                  self._in_callback = False
              self._callback_mutex.release()
              return MQTT_ERR_CONN_LOST
  
          return MQTT_ERR_SUCCESS
docs: Process miscellaneous network events. Use in place of calling loop() if you
          wish to call select() or equivalent on.
  
          Do not use if you are using the threaded interface loop_start().