mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2025-12-12 17:20:30 +08:00
send error in streaming response
This commit is contained in:
parent
7d7f4965de
commit
4a1f51bc30
@ -106,9 +106,9 @@ class MsdApi:
|
|||||||
size = written = 0
|
size = written = 0
|
||||||
response: Optional[StreamResponse] = None
|
response: Optional[StreamResponse] = None
|
||||||
|
|
||||||
async def stream_write_info() -> None:
|
async def stream_write_info(err: Optional[Exception]=None) -> None:
|
||||||
assert response is not None
|
assert response is not None
|
||||||
await stream_json(response, self.__make_write_info(name, size, written))
|
await stream_json(response, self.__make_write_info(name, size, written), err)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
async with htclient.download(
|
async with htclient.download(
|
||||||
@ -141,7 +141,7 @@ class MsdApi:
|
|||||||
|
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
if response is not None:
|
if response is not None:
|
||||||
await stream_write_info()
|
await stream_write_info(err)
|
||||||
elif isinstance(err, aiohttp.ClientError):
|
elif isinstance(err, aiohttp.ClientError):
|
||||||
return make_json_exception(err, 400)
|
return make_json_exception(err, 400)
|
||||||
raise
|
raise
|
||||||
|
|||||||
@ -178,8 +178,12 @@ async def start_streaming(request: Request, content_type: str) -> StreamResponse
|
|||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
async def stream_json(response: StreamResponse, result: Dict) -> None:
|
async def stream_json(response: StreamResponse, result: Dict, err: Optional[Exception]=None) -> None:
|
||||||
await response.write(json.dumps(result).encode("utf-8") + b"\r\n")
|
await response.write(json.dumps({
|
||||||
|
"result": result,
|
||||||
|
"error": ("" if err is None else type(err).__name__),
|
||||||
|
"error_msg": ("" if err is None else str(err)),
|
||||||
|
}).encode("utf-8") + b"\r\n")
|
||||||
|
|
||||||
|
|
||||||
# =====
|
# =====
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user