diff --git a/django_dramatiq/admin.py b/django_dramatiq/admin.py index 40058c6..600239d 100644 --- a/django_dramatiq/admin.py +++ b/django_dramatiq/admin.py @@ -13,24 +13,14 @@ @admin.register(Task) class TaskAdmin(admin.ModelAdmin): exclude = ("message_data",) - readonly_fields = ("message_details", "traceback", "status", "queue_name", "actor_name") - list_display = ( - "__str__", - "status", - "eta", - "created_at", - "updated_at", - "queue_name", - "actor_name", - ) + readonly_fields = ("message_details", "traceback", "status", "queue_name", "actor_name", "created_at", "updated_at") + list_display = ("__str__", "status", "eta", "created_at", "updated_at", "queue_name", "actor_name",) list_filter = ("status", "created_at", "queue_name", "actor_name") search_fields = ("actor_name",) def eta(self, instance): - timestamp = ( - instance.message.options.get("eta", instance.message.message_timestamp) / 1000 - ) - + """Estimated time of arrival""" + timestamp = (instance.message.options.get("eta", instance.message.message_timestamp) / 1000) # Django expects a timezone-aware datetime if USE_TZ is True, and a naive datetime in localtime otherwise. tz = timezone.utc if settings.USE_TZ else None return datetime.fromtimestamp(timestamp, tz=tz) diff --git a/django_dramatiq/middleware.py b/django_dramatiq/middleware.py index d3dd2d0..168c257 100644 --- a/django_dramatiq/middleware.py +++ b/django_dramatiq/middleware.py @@ -5,7 +5,7 @@ from django import db from dramatiq.middleware import Middleware -LOGGER = logging.getLogger("django_dramatiq.AdminMiddleware") +logger = logging.getLogger(__name__) class AdminMiddleware(Middleware): @@ -15,7 +15,7 @@ class AdminMiddleware(Middleware): def after_enqueue(self, broker, message, delay): from .models import Task - LOGGER.debug("Creating Task from message %r.", message.message_id) + logger.debug("Creating Task from message %r.", message.message_id) status = Task.STATUS_ENQUEUED if delay: status = Task.STATUS_DELAYED @@ -30,7 +30,7 @@ def after_enqueue(self, broker, message, delay): def before_process_message(self, broker, message): from .models import Task - LOGGER.debug("Updating Task from message %r.", message.message_id) + logger.debug("Updating Task from message %r.", message.message_id) Task.tasks.create_or_update_from_message( message, status=Task.STATUS_RUNNING, @@ -59,7 +59,7 @@ def after_process_message(self, broker, message, *, result=None, exception=None, elif status is None: status = Task.STATUS_DONE - LOGGER.debug("Updating Task from message %r.", message.message_id) + logger.debug("Updating Task from message %r.", message.message_id) Task.tasks.create_or_update_from_message( message, status=status, diff --git a/django_dramatiq/models.py b/django_dramatiq/models.py index 5a2f19b..fe7ca1d 100644 --- a/django_dramatiq/models.py +++ b/django_dramatiq/models.py @@ -1,3 +1,4 @@ +import logging from datetime import timedelta from django.db import models @@ -10,6 +11,8 @@ #: The database label to use when storing task metadata. DATABASE_LABEL = DjangoDramatiqConfig.tasks_database() +logger = logging.getLogger(__name__) + class TaskManager(models.Manager): def create_or_update_from_message(self, message, **extra_fields): @@ -63,4 +66,8 @@ def message(self): return Message.decode(bytes(self.message_data)) def __str__(self): - return str(self.message) + try: + return str(self.message) + except Exception as e: + logger.exception(f'Failed to display Task {self.id}') + return f'Failed to display Task: {e}'