This commit is contained in:
@ -1,3 +1,5 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
from contextlib import asynccontextmanager
|
from contextlib import asynccontextmanager
|
||||||
import datetime
|
import datetime
|
||||||
import json
|
import json
|
||||||
@ -113,7 +115,7 @@ class LongTaskTarget(BaseModel):
|
|||||||
class LongTask(BaseModel):
|
class LongTask(BaseModel):
|
||||||
uuid: str
|
uuid: str
|
||||||
data_json: str
|
data_json: str
|
||||||
target: "LongTaskTarget"
|
target: LongTaskTarget
|
||||||
callback: str
|
callback: str
|
||||||
deadline: datetime.datetime
|
deadline: datetime.datetime
|
||||||
canceled: bool = False
|
canceled: bool = False
|
||||||
@ -145,12 +147,25 @@ class LongTask(BaseModel):
|
|||||||
datafile.unhandled.setdefault(self.callback, []).append(self)
|
datafile.unhandled.setdefault(self.callback, []).append(self)
|
||||||
|
|
||||||
return
|
return
|
||||||
await hdl(self)
|
success = False
|
||||||
|
try:
|
||||||
|
await hdl(self)
|
||||||
|
success = True
|
||||||
|
except Exception as e:
|
||||||
|
logger.exception(e)
|
||||||
async with longtask_data() as datafile:
|
async with longtask_data() as datafile:
|
||||||
datafile.to_handle[self.callback] = [
|
datafile.to_handle[self.callback] = [
|
||||||
t for t in datafile.to_handle[self.callback] if t.uuid != self.uuid
|
t for t in datafile.to_handle[self.callback] if t.uuid != self.uuid
|
||||||
]
|
]
|
||||||
logger.info(f"LongTask 工作完成 UUID={self.uuid} callback={self.callback}")
|
if not success:
|
||||||
|
datafile.unhandled.setdefault(self.callback, []).append(self)
|
||||||
|
logger.info(
|
||||||
|
f"LongTask 执行失败 UUID={self.uuid} callback={self.callback}"
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
logger.info(
|
||||||
|
f"LongTask 工作完成 UUID={self.uuid} callback={self.callback}"
|
||||||
|
)
|
||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
self._aio_task = None
|
self._aio_task = None
|
||||||
|
|||||||
Reference in New Issue
Block a user