Remove task inspection from task manager app

Signed-off-by: Roberto Rosario <roberto.rosario@mayan-edms.com>
This commit is contained in:
Roberto Rosario
2019-07-24 02:49:37 -04:00
parent fac77a2f73
commit 6f907d156a
8 changed files with 6 additions and 180 deletions

View File

@@ -59,7 +59,7 @@
- Add platform template to return queues for a worker.
- Update the EXIFTOOL driver to run for all documents
regardless of MIME type.
- Remove task inspection from task manager app.
3.2.6 (2019-07-10)
==================

View File

@@ -74,6 +74,7 @@ Changes
- Add entrypoint commands to run single workers, single gunicorn
or single celery commands like "flower".
- Add platform template to return queues for a worker.
- Remove task inspection from task manager app.
Removals
@@ -186,7 +187,9 @@ Backward incompatible changes
Bugs fixed or issues closed
---------------------------
- :gitlab-issue:`526` RuntimeWarning: Never call result.get() within a task!
- :gitlab-issue:`532` Workflow preview isn't updated right after transitions are modified
- :gitlab-issue:`540` hint-outdated/update documentation
- :gitlab-issue:`594` 3.2b1: Unable to install/run under Python 3.5/3.6/3.7
- :gitlab-issue:`634` Failing docker entrypoint when using secret config
- :gitlab-issue:`635` Build a docker image for Python3

View File

@@ -8,18 +8,13 @@ from mayan.apps.common.menus import menu_object, menu_secondary, menu_tools
from mayan.apps.navigation.classes import SourceColumn
from .classes import CeleryQueue, Task
from .links import (
link_queue_list, link_queue_active_task_list,
link_queue_scheduled_task_list, link_queue_reserved_task_list,
link_task_manager
)
from .links import link_task_manager
from .settings import * # NOQA
class TaskManagerApp(MayanAppConfig):
app_namespace = 'task_manager'
app_url = 'task_manager'
has_tests = True
name = 'mayan.apps.task_manager'
verbose_name = _('Task manager')
@@ -65,16 +60,4 @@ class TaskManagerApp(MayanAppConfig):
func=lambda context: context['object'].kwargs['worker_pid']
)
menu_object.bind_links(
links=(
link_queue_active_task_list, link_queue_scheduled_task_list,
link_queue_reserved_task_list,
), sources=(CeleryQueue,)
)
menu_secondary.bind_links(
links=(link_queue_list,),
sources=(CeleryQueue, Task, 'task_manager:queue_list')
)
menu_tools.bind_links(links=(link_task_manager,))

View File

@@ -6,9 +6,6 @@ import logging
from kombu import Exchange, Queue
from celery.five import monotonic
from celery.task.control import inspect
from django.apps import apps
from django.utils.encoding import force_text, python_2_unicode_compatible
from django.utils.module_loading import import_string
@@ -62,18 +59,10 @@ class Task(object):
def __str__(self):
return force_text(self.task_type)
def get_time_started(self):
time_start = self.kwargs.get('time_start')
if time_start:
return now() - timedelta(seconds=monotonic() - self.kwargs['time_start'])
else:
return None
@python_2_unicode_compatible
class CeleryQueue(object):
_registry = {}
_inspect_instance = inspect()
@staticmethod
def initialize():
@@ -132,21 +121,6 @@ class CeleryQueue(object):
self.task_types.append(task_type)
return task_type
def get_active_tasks(self):
return self._process_task_dictionary(
task_dictionary=self.__class__._inspect_instance.active()
)
def get_reserved_tasks(self):
return self._process_task_dictionary(
task_dictionary=self.__class__._inspect_instance.reserved()
)
def get_scheduled_tasks(self):
return self._process_task_dictionary(
task_dictionary=self.__class__._inspect_instance.scheduled()
)
def _update_celery(self):
kwargs = {
'name': self.name, 'exchange': Exchange(self.name),

View File

@@ -11,19 +11,3 @@ link_task_manager = Link(
icon_class=icon_task_manager, permissions=(permission_task_view,),
text=_('Task manager'), view='task_manager:queue_list'
)
link_queue_list = Link(
icon_class=icon_queue_list, permissions=(permission_task_view,),
text=_('Background task queues'), view='task_manager:queue_list'
)
link_queue_active_task_list = Link(
args='resolved_object.name', permissions=(permission_task_view,),
text=_('Active tasks'), view='task_manager:queue_active_task_list'
)
link_queue_reserved_task_list = Link(
args='resolved_object.name', permissions=(permission_task_view,),
text=_('Reserved tasks'), view='task_manager:queue_reserved_task_list'
)
link_queue_scheduled_task_list = Link(
args='resolved_object.name', permissions=(permission_task_view,),
text=_('Scheduled tasks'), view='task_manager:queue_scheduled_task_list'
)

View File

@@ -22,29 +22,11 @@ class TaskManagerViewTestCase(TaskManagerTestMixin, GenericViewTestCase):
super(TaskManagerViewTestCase, self).setUp()
self._create_test_queue()
def _request_active_task_list(self):
return self.get(
viewname='task_manager:queue_active_task_list',
kwargs={'queue_name': self.test_queue.name}, follow=True
)
def _request_queue_list(self):
return self.get(
viewname='task_manager:queue_list', follow=True
)
def _request_reserved_task_list(self):
return self.get(
viewname='task_manager:queue_reserved_task_list',
kwargs={'queue_name': self.test_queue.name}, follow=True
)
def _request_scheduled_task_list(self):
return self.get(
viewname='task_manager:queue_scheduled_task_list',
kwargs={'queue_name': self.test_queue.name}, follow=True
)
def test_queue_list_view_no_permissions(self):
response = self._request_queue_list()
@@ -57,33 +39,3 @@ class TaskManagerViewTestCase(TaskManagerTestMixin, GenericViewTestCase):
self.assertContains(
response, text=self.test_queue.name, status_code=200
)
def test_active_task_list_view_no_permissions(self):
response = self._request_active_task_list()
self.assertEqual(response.status_code, 403)
def test_active_task_list_view_with_permissions(self):
self.grant_permission(permission=permission_task_view)
response = self._request_active_task_list()
self.assertEqual(response.status_code, 200)
def test_reserved_task_list_view_no_permissions(self):
response = self._request_reserved_task_list()
self.assertEqual(response.status_code, 403)
def test_reserved_task_list_view_with_permissions(self):
self.grant_permission(permission=permission_task_view)
response = self._request_reserved_task_list()
self.assertEqual(response.status_code, 200)
def test_scheduled_task_list_view_no_permissions(self):
response = self._request_scheduled_task_list()
self.assertEqual(response.status_code, 403)
def test_scheduled_task_list_view_with_permissions(self):
self.grant_permission(permission=permission_task_view)
response = self._request_scheduled_task_list()
self.assertEqual(response.status_code, 200)

View File

@@ -2,29 +2,11 @@ from __future__ import unicode_literals
from django.conf.urls import url
from .views import (
QueueListView, QueueActiveTaskListView, QueueScheduledTaskListView,
QueueReservedTaskListView
)
from .views import QueueListView
urlpatterns = [
url(
regex=r'^queues/$', view=QueueListView.as_view(),
name='queue_list'
),
url(
regex=r'^queues/(?P<queue_name>[-\w]+)/tasks/active/$',
view=QueueActiveTaskListView.as_view(), name='queue_active_task_list'
),
url(
regex=r'^queues/(?P<queue_name>[-\w]+)/tasks/scheduled/$',
view=QueueScheduledTaskListView.as_view(),
name='queue_scheduled_task_list'
),
url(
regex=r'^queues/(?P<queue_name>[-\w]+)/tasks/reserved/$',
view=QueueReservedTaskListView.as_view(),
name='queue_reserved_task_list'
),
]

View File

@@ -18,55 +18,3 @@ class QueueListView(SingleObjectListView):
def get_source_queryset(self):
return CeleryQueue.all()
class QueueActiveTaskListView(SingleObjectListView):
view_permission = permission_task_view
def get_extra_context(self):
return {
'hide_object': True,
'object': self.get_object(),
'title': _('Active tasks in queue: %s') % self.get_object()
}
def get_object(self):
return CeleryQueue.get(queue_name=self.kwargs['queue_name'])
def get_source_queryset(self):
try:
return self.get_task_list()
except Exception as exception:
messages.error(
message=_(
'Unable to retrieve task list; %s'
) % exception, request=self.request
)
return ()
def get_task_list(self):
return self.get_object().get_active_tasks()
class QueueScheduledTaskListView(QueueActiveTaskListView):
def get_extra_context(self):
return {
'hide_object': True,
'object': self.get_object(),
'title': _('Scheduled tasks in queue: %s') % self.get_object()
}
def get_task_list(self):
return self.get_object().get_scheduled_tasks()
class QueueReservedTaskListView(QueueActiveTaskListView):
def get_extra_context(self):
return {
'hide_object': True,
'object': self.get_object(),
'title': _('Reserved tasks in queue: %s') % self.get_object()
}
def get_task_list(self):
return self.get_object().get_reserved_tasks()