uncloud/uncloud/tasks.py

23 lines
595 B
Python

from celery import shared_task
from celery.result import AsyncResult
from .models import UncloudTask
@shared_task(bind=True)
def cleanup_tasks(self):
print(f"Cleanup time from {self}: {self.request.id}")
for task in UncloudTask.objects.all():
print(f"Pruning {task}...")
if str(task.task_id) == str(self.request.id):
print("Skipping myself")
continue
res = AsyncResult(id=str(task.task_id))
print(f"Task {task}: {res.state}")
if res.ready():
print(res.get())
task.delete()
res.forget()