Skip to content

Commit 266e62c

Browse files
committed
Add terminate selected tasks in action
1 parent 416551c commit 266e62c

File tree

1 file changed

+22
-1
lines changed

1 file changed

+22
-1
lines changed

django_celery_results/admin.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
"""Result Task Admin interface."""
22

3+
from celery import current_app as celery_app
34
from django.conf import settings
4-
from django.contrib import admin
5+
from django.contrib import admin, messages
56
from django.utils.translation import gettext_lazy as _
67

78
try:
@@ -58,6 +59,7 @@ class TaskResultAdmin(admin.ModelAdmin):
5859
'classes': ('extrapretty', 'wide')
5960
}),
6061
)
62+
actions = ['terminate_task']
6163

6264
def get_readonly_fields(self, request, obj=None):
6365
if ALLOW_EDITS:
@@ -67,6 +69,25 @@ def get_readonly_fields(self, request, obj=None):
6769
field.name for field in self.opts.local_fields
6870
})
6971

72+
def terminate_task(self, request, queryset):
73+
"""Terminate selected tasks."""
74+
task_ids = list(queryset.values_list('task_id', flat=True))
75+
try:
76+
celery_app.control.terminate(task_ids)
77+
self.message_user(
78+
request,
79+
f"{len(task_ids)} Task was terminated successfully.",
80+
messages.SUCCESS,
81+
)
82+
except Exception as e:
83+
self.message_user(
84+
request,
85+
f"Error while terminating tasks: {e}",
86+
messages.ERROR,
87+
)
88+
89+
terminate_task.short_description = "Terminate selected tasks"
90+
7091

7192
admin.site.register(TaskResult, TaskResultAdmin)
7293

0 commit comments

Comments
 (0)