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 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