Added timeout context manager finally

This commit is contained in:
Oracle 2025-08-02 08:36:00 +02:00
parent e2995273cc
commit e8660437a5
2 changed files with 36 additions and 10 deletions

View File

@ -16,15 +16,32 @@ class BaseModelAdmin( admin.ModelAdmin ):
self.message_user( request, mark_safe(f"""
Error For <b>{id}</b>:
<style>
pre.tb {{display: none;}}
a.tb:focus + pre.tb {{display: block;}}
button.tb {{
background: none;
border: none;
cursor: pointer;
color: var(--link-fg);
text-decoration: none;
}}
button.tb:hover {{ text-decoration: underline; }}
pre.summary {{ white-space: pre-wrap; }}
pre.tb {{
display: none;
background: #060d0a;
white-space: pre-wrap;
border-radius: 5px;
font-size: 10px;
line-height: 1.5em;
padding: 10px;
}}
pre.tb.shown {{ display: block;}}
</style>
<pre>{escape(e)}</pre>
<a class='tb' href='#'>[TraceBack]</a>
<pre class="summary">{escape(e)}</pre>
<button class='tb' onclick="event.target.parentElement.querySelector('pre.tb').classList.toggle('shown')">[TraceBack]</button>
<pre class='tb'>{escape(traceback_message)}</pre>
"""), 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 )

View File

@ -194,12 +194,21 @@ class Trace( BaseModel ):
await self.asave()
try:
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}" )
self.stderr = traceback.format_exc()