def cleanup():
        log.debug('Cleaning up stale or invalid sessions')

        sessions = WatchSession.all()

        if not len(sessions):
            return

        for key, ws in sessions:
            delete = False

            # Destroy invalid sessions
            if ws is None:
                delete = True
            elif not ws.last_updated or type(ws.last_updated) is not datetime:
                delete = True
            elif total_seconds(datetime.now() - ws.last_updated) / 60 / 60 > 24:
                # Destroy sessions last updated over 24 hours ago
                log.debug('Session %s was last updated over 24 hours ago, queued for deletion', key)
                delete = True

            # Delete session or flag for update
            if delete:
                log.info('Session %s looks stale or invalid, deleting it now', key)
                WatchSession.delete(key)
            elif not ws.update_required:
                log.info('Queueing session %s for update', key)
                ws.update_required = True
                ws.save()

        log.debug('Finished cleaning up')
    def check_sessions(self):
        sessions = WatchSession.all()

        if not len(sessions):
            return

        for key, session in sessions:
            self.check_paused(session)
    def check_sessions(self):
        sessions = WatchSession.all()

        if not len(sessions):
            return

        for key, session in sessions:
            self.check_paused(session)
示例#4
0
    def is_watching(self, p_item):
        sessions = WatchSession.all(lambda s:
            s.get('metadata') and
            s['metadata'].get('rating_key') == p_item.rating_key
        )

        for key, session in sessions:
            if session.watching:
                return True

        return False
    def check_sessions(self):
        sessions = WatchSession.all()

        if not len(sessions):
            return

        for key, ws in sessions:
            if getattr(ws, 'skip', True):
                continue

            try:
                self.check_paused(ws)
            except AttributeError, ex:
                log.warn("Unable to determine if session is paused, skipping invalid session - %s", ex, exc_info=True)
                ws.skip = True