diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 429da65..2e96e6f 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -20,3 +20,4 @@ This file lists the contributors to the `django_dramatiq` project. | [@OrazioPirataDelloSpazio](https://github.com/OrazioPirataDelloSpazio) | Lorenzo | | [@timdrijvers](https://github.com/timdrijvers) | Tim Drijvers | | [@magraeber](https://github.com/magraeber) | magraeber | +| [@ikvk](https://github.com/ikvk) | Vladimir Kaukin | diff --git a/django_dramatiq/admin.py b/django_dramatiq/admin.py index 8af4359..b3666d1 100644 --- a/django_dramatiq/admin.py +++ b/django_dramatiq/admin.py @@ -12,24 +12,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 833cc7f..ff48450 100644 --- a/django_dramatiq/middleware.py +++ b/django_dramatiq/middleware.py @@ -3,7 +3,7 @@ from django import db from dramatiq.middleware import Middleware -LOGGER = logging.getLogger("django_dramatiq.AdminMiddleware") +logger = logging.getLogger(__name__) class AdminMiddleware(Middleware): @@ -13,7 +13,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 @@ -28,7 +28,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, @@ -49,7 +49,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}' diff --git a/setup.py b/setup.py index f0898c8..25ff47e 100644 --- a/setup.py +++ b/setup.py @@ -19,7 +19,7 @@ def rel(*xs): setup( - name="django_dramatiq", + name="django-dramatiq", version=version, description="A Django app for Dramatiq.", long_description="Visit https://github.com/Bogdanp/django_dramatiq for more information.",