def is_expired(self):
   
        # If it has been assigned to a laboratory that explicitly requests to avoid 
        # using polling, then it is only expired when the particular laboratory
        # states that it is expired.
        if self.manages_polling():
            return False

        # If it has been assigned in a foreign server, then, it is never expired
        if self.is_federated():
            return False

        # If it is not polling, it was expired in the past
        if not self.is_polling():
            return True

        #
        # But if it polling and it hasn't polled in some time
        #
        current_time = self.time_module.time()
        latest_poll, expiration_time = self._reservation_session['session_polling']
        if current_time - latest_poll > self._cfg_manager.get_value(EXPERIMENT_POLL_TIME, DEFAULT_EXPERIMENT_POLL_TIME):
            return True
        elif expiration_time != ReservationProcessor.EXPIRATION_TIME_NOT_SET and current_time > expiration_time:
            return True
        return False
Did this reservation's user stay out for a long time without polling?
dataset/ETHPy150Open weblabdeusto/weblabdeusto/server/src/weblab/core/reservation_processor.py/ReservationProcessor.is_expired