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