def cleanup_tasks(): """ Find any tasks which haven't checked in within a reasonable time period and requeue them if necessary. Additionally remove any old Task entries which are completed. """ now = datetime.utcnow() pending_tasks = Task.query.filter( Task.status != Status.finished, Task.date_modified < now - CHECK_TIME, ) for task in pending_tasks: task_func = TrackedTask(queue.get_task(task.task_name)) task_func.delay( task_id=task.task_id.hex, parent_task_id=task.parent_id.hex if task.parent_id else None, **task.data['kwargs'] ) deleted = Task.query.filter( Task.status == Status.finished, Task.date_modified < now - EXPIRE_TIME, # Filtering by date_created isn't necessary, but it allows us to filter using an index on # a value that doesn't update, which makes our deletion more efficient. Task.date_created < now - EXPIRE_TIME, ).delete(synchronize_session=False) statsreporter.stats().incr('tasks_deleted', deleted)
def cleanup_tasks(): """ Find any tasks which haven't checked in within a reasonable time period and requeue them if necessary. Additionally remove any old Task entries which are completed. """ now = datetime.utcnow() pending_tasks = Task.query.filter( Task.status != Status.finished, Task.date_modified < now - CHECK_TIME, ) for task in pending_tasks: task_func = TrackedTask(queue.get_task(task.task_name)) task_func.delay( task_id=task.task_id.hex, parent_task_id=task.parent_id.hex if task.parent_id else None, **task.data['kwargs'] ) Task.query.filter( Task.status == Status.finished, Task.date_modified < now - EXPIRE_TIME, ).delete()
def cleanup_tasks(): """ Find any tasks which haven't checked in within a reasonable time period and requeue them if necessary. Additionally remove any old Task entries which are completed. """ now = datetime.utcnow() pending_tasks = Task.query.filter( Task.status != Status.finished, Task.date_modified < now - CHECK_TIME, ) for task in pending_tasks: task_func = TrackedTask(queue.get_task(task.task_name)) task_func.delay( task_id=task.task_id.hex, parent_task_id=task.parent_id.hex if task.parent_id else None, **task.data['kwargs']) Task.query.filter( Task.status == Status.finished, Task.date_modified < now - EXPIRE_TIME, ).delete()
def cleanup_tasks(): """ Find any tasks which haven't checked in within a reasonable time period and requeue them if necessary. Additionally remove any old Task entries which are completed. """ now = datetime.utcnow() pending_tasks = Task.query.filter( Task.status != Status.finished, Task.date_modified < now - CHECK_TIME, ) for task in pending_tasks: task_func = TrackedTask(queue.get_task(task.task_name)) task_func.delay( task_id=task.task_id.hex, parent_task_id=task.parent_id.hex if task.parent_id else None, **task.data['kwargs']) deleted = Task.query.filter( Task.status == Status.finished, Task.date_modified < now - EXPIRE_TIME, # Filtering by date_created isn't necessary, but it allows us to filter using an index on # a value that doesn't update, which makes our deletion more efficient. Task.date_created < now - EXPIRE_TIME, ).delete(synchronize_session=False) statsreporter.stats().incr('tasks_deleted', deleted)
def cleanup_tasks(): """ Find any tasks which haven't checked in within a reasonable time period and requeue them if nescessary. """ now = datetime.utcnow() cutoff = now - CHECK_TIME pending_tasks = Task.query.filter(Task.status != Status.finished, Task.date_modified < cutoff) for task in pending_tasks: task_func = TrackedTask(queue.get_task(task.task_name)) task_func.delay( task_id=task.task_id.hex, parent_task_id=task.parent_id.hex if task.parent_id else None, **task.data["kwargs"] )
def cleanup_tasks(): """ Find any tasks which haven't checked in within a reasonable time period and requeue them if nescessary. """ now = datetime.utcnow() cutoff = now - CHECK_TIME pending_tasks = Task.query.filter( Task.status != Status.finished, Task.date_modified < cutoff, ) for task in pending_tasks: task_func = TrackedTask(queue.get_task(task.task_name)) task_func.delay( task_id=task.task_id.hex, parent_task_id=task.parent_id.hex if task.parent_id else None, **task.data['kwargs'])