diff --git a/asyncron/base/admin.py b/asyncron/base/admin.py index 58e7098..20fa562 100644 --- a/asyncron/base/admin.py +++ b/asyncron/base/admin.py @@ -14,11 +14,12 @@ class BaseModelAdmin( admin.ModelAdmin ): if request.user.is_superuser: traceback_message = ''.join(traceback.TracebackException.from_exception(e).format()) self.message_user( request, mark_safe(f""" - Error For {id}: {e} + Error For {id}: +
{escape(e)}
[TraceBack]
{escape(traceback_message)}
"""), messages.ERROR diff --git a/asyncron/models.py b/asyncron/models.py index a2744c7..029a617 100644 --- a/asyncron/models.py +++ b/asyncron/models.py @@ -155,7 +155,7 @@ class Trace( BaseModel ): assert self.status in "SAE", f"Cannot reschedule a task that is in {self.get_status_display()} state!" await self.eval_related('task') - assert self.task.interval, "This is not a periodic task! Nothing to reschedule." + assert self.task.interval or target_datetime, "This is not a periodic task! Nothing to reschedule." self.set_status( "S", reason ) if target_datetime: diff --git a/asyncron/workers.py b/asyncron/workers.py index 3d48953..b9bbe0d 100644 --- a/asyncron/workers.py +++ b/asyncron/workers.py @@ -362,7 +362,7 @@ class AsyncronWorker: from .models import Task, Trace #start services that aren't running yet. - Ts = Task.objects.filter( interval = None ).exclude( + Ts = Task.objects.filter( interval = None, timeout = None ).exclude( trace__status__in = "WR" ).exclude( worker_type = "D" if self.model.is_robust else "R" )