Cleanup partial tasks

pull/1426/head
Piero Toffanin 2023-11-06 11:21:10 -05:00
rodzic 6b4230f233
commit 9fb0c6db67
4 zmienionych plików z 26 dodań i 2 usunięć

Wyświetl plik

@ -40,9 +40,9 @@ class TaskAdmin(admin.ModelAdmin):
def has_add_permission(self, request):
return False
list_display = ('id', 'project', 'processing_node', 'created_at', 'status', 'last_error')
list_display = ('id', 'name', 'project', 'processing_node', 'created_at', 'status', 'last_error')
list_filter = ('status', 'project',)
search_fields = ('id', 'project__name')
search_fields = ('id', 'name', 'project__name')
admin.site.register(Task, TaskAdmin)

Wyświetl plik

@ -411,6 +411,10 @@ QUOTA_EXCEEDED_GRACE_PERIOD = 8
# Maximum number of processing nodes to show in "Processing Nodes" menus/dropdowns
UI_MAX_PROCESSING_NODES = None
# Number of hours before partial tasks
# are removed (or None to disable)
CLEANUP_PARTIAL_TASKS = None
if TESTING or FLUSHING:
CELERY_TASK_ALWAYS_EAGER = True
EXTERNAL_AUTH_ENDPOINT = 'http://0.0.0.0:5555/auth'

Wyświetl plik

@ -28,6 +28,14 @@ app.conf.beat_schedule = {
'retry': False
}
},
'cleanup-tasks': {
'task': 'worker.tasks.cleanup_tasks',
'schedule': 3600,
'options': {
'expires': 1799,
'retry': False
}
},
'cleanup-tmp-directory': {
'task': 'worker.tasks.cleanup_tmp_directory',
'schedule': 3600,

Wyświetl plik

@ -23,6 +23,8 @@ import worker
from .celery import app
from app.raster_utils import export_raster as export_raster_sync, extension_for_export_format
from app.pointcloud_utils import export_pointcloud as export_pointcloud_sync
from django.utils import timezone
from datetime import timedelta
import redis
logger = get_task_logger("app.logger")
@ -67,6 +69,16 @@ def cleanup_projects():
if total > 0 and 'app.Project' in count_dict:
logger.info("Deleted {} projects".format(count_dict['app.Project']))
@app.task(ignore_result=True)
def cleanup_tasks():
# Delete tasks that are older than
if settings.CLEANUP_PARTIAL_TASKS is None:
return
tasks_to_delete = Task.objects.filter(partial=True, created_at__lte=timezone.now() - timedelta(hours=settings.CLEANUP_PARTIAL_TASKS))
for t in tasks_to_delete:
logger.info("Cleaning up partial task {}".format(t))
t.delete()
@app.task(ignore_result=True)
def cleanup_tmp_directory():