diff --git a/asyncron/base/admin.py b/asyncron/base/admin.py index 20fa562..0b0460c 100644 --- a/asyncron/base/admin.py +++ b/asyncron/base/admin.py @@ -16,15 +16,32 @@ class BaseModelAdmin( admin.ModelAdmin ): self.message_user( request, mark_safe(f""" Error For {id}: -
{escape(e)}
- [TraceBack]
+ {escape(e)}
+
{escape(traceback_message)}
"""), messages.ERROR
)
- else: self.message_user( request, f"Error For {id}: {e}", messages.ERROR)
+ else: self.message_user( request, f"Error For {id}: {escape(e)}", messages.ERROR)
if failed == 0: self.message_user( request, f"All {len(results)} Succeeded!", messages.SUCCESS )
diff --git a/asyncron/models.py b/asyncron/models.py
index 196ea8a..d85bce6 100644
--- a/asyncron/models.py
+++ b/asyncron/models.py
@@ -194,11 +194,20 @@ class Trace( BaseModel ):
await self.asave()
try:
- if self.task.self_aware:
- output = await func(self, *self.args, **self.kwargs )
- else:
- with patch( 'builtins.print', self.print ):
- output = await func( *self.args, **self.kwargs )
+ async with asyncio.timeout( None ) as tmcm:
+
+ if self.task.timeout:
+ tmcm.reschedule( self.loop.time() + self.task.timeout.total_seconds() )
+
+ if self.task.self_aware:
+ output = await func(self, *self.args, **self.kwargs )
+ else:
+ with patch( 'builtins.print', self.print ):
+ output = await func( *self.args, **self.kwargs )
+
+ except TimeoutError:
+ self.set_status( "E", f"Timed out" )
+ self.stderr = traceback.format_exc()
except Exception as e:
self.set_status( "E", f"Exception: {e}" )