Skip to content

Commit b90fcfc

Browse files
committed
Add terminate selected tasks action in admin
1 parent 416551c commit b90fcfc

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

django_celery_results/admin.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
from django.conf import settings
44
from django.contrib import admin
55
from django.utils.translation import gettext_lazy as _
6+
from django.contrib import messages
7+
from celery import current_app as celery_app
8+
69

710
try:
811
ALLOW_EDITS = settings.DJANGO_CELERY_RESULTS['ALLOW_EDITS']
@@ -58,6 +61,7 @@ class TaskResultAdmin(admin.ModelAdmin):
5861
'classes': ('extrapretty', 'wide')
5962
}),
6063
)
64+
actions = ['terminate_task']
6165

6266
def get_readonly_fields(self, request, obj=None):
6367
if ALLOW_EDITS:
@@ -67,6 +71,26 @@ def get_readonly_fields(self, request, obj=None):
6771
field.name for field in self.opts.local_fields
6872
})
6973

74+
def terminate_task(self, request, queryset):
75+
"""Terminate selected tasks."""
76+
for task_result in queryset:
77+
task_id = task_result.task_id
78+
try:
79+
celery_app.control.revoke(task_id, terminate=True)
80+
self.message_user(
81+
request,
82+
f"Task {task_id} was terminated successfully.",
83+
messages.SUCCESS,
84+
)
85+
except Exception as e:
86+
self.message_user(
87+
request,
88+
f"Failed to terminate task {task_id}. Error: {e}",
89+
messages.ERROR,
90+
)
91+
92+
terminate_task.short_description = "Terminate selected tasks"
93+
7094

7195
admin.site.register(TaskResult, TaskResultAdmin)
7296

0 commit comments

Comments
 (0)