Skip to content

Commit 51765b6

Browse files
committed
refac
1 parent 20544d4 commit 51765b6

2 files changed

Lines changed: 41 additions & 31 deletions

File tree

backend/open_webui/main.py

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1787,11 +1787,12 @@ async def process_chat(request, form_data, user, metadata, model):
17871787
log.info('Chat processing was cancelled')
17881788
try:
17891789
event_emitter = await get_event_emitter(metadata)
1790-
await asyncio.shield(
1791-
event_emitter(
1792-
{'type': 'chat:tasks:cancel'},
1790+
if event_emitter:
1791+
await asyncio.shield(
1792+
event_emitter(
1793+
{'type': 'chat:tasks:cancel'},
1794+
)
17931795
)
1794-
)
17951796
except Exception as e:
17961797
pass
17971798
finally:
@@ -1812,15 +1813,16 @@ async def process_chat(request, form_data, user, metadata, model):
18121813
)
18131814

18141815
event_emitter = await get_event_emitter(metadata)
1815-
await event_emitter(
1816-
{
1817-
'type': 'chat:message:error',
1818-
'data': {'error': {'content': str(e)}},
1819-
}
1820-
)
1821-
await event_emitter(
1822-
{'type': 'chat:tasks:cancel'},
1823-
)
1816+
if event_emitter:
1817+
await event_emitter(
1818+
{
1819+
'type': 'chat:message:error',
1820+
'data': {'error': {'content': str(e)}},
1821+
}
1822+
)
1823+
await event_emitter(
1824+
{'type': 'chat:tasks:cancel'},
1825+
)
18241826

18251827
except Exception:
18261828
pass

backend/open_webui/utils/middleware.py

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4692,25 +4692,33 @@ async def restricted_import(name, globals=None, locals=None, fromlist=(), level=
46924692
await background_tasks_handler(ctx)
46934693
except asyncio.CancelledError:
46944694
log.warning('Task was cancelled!')
4695-
await event_emitter({'type': 'chat:tasks:cancel'})
4695+
try:
4696+
await asyncio.shield(event_emitter({'type': 'chat:tasks:cancel'}))
46964697

4697-
if not ENABLE_REALTIME_CHAT_SAVE:
4698-
# Save message in the database
4699-
await Chats.upsert_message_to_chat_by_id_and_message_id(
4700-
metadata['chat_id'],
4701-
metadata['message_id'],
4702-
{
4703-
'done': True,
4704-
'content': serialize_output(output),
4705-
'output': output,
4706-
},
4707-
)
4708-
else:
4709-
await Chats.upsert_message_to_chat_by_id_and_message_id(
4710-
metadata['chat_id'],
4711-
metadata['message_id'],
4712-
{'done': True},
4713-
)
4698+
if not ENABLE_REALTIME_CHAT_SAVE:
4699+
# Save message in the database
4700+
await asyncio.shield(
4701+
Chats.upsert_message_to_chat_by_id_and_message_id(
4702+
metadata['chat_id'],
4703+
metadata['message_id'],
4704+
{
4705+
'done': True,
4706+
'content': serialize_output(output),
4707+
'output': output,
4708+
},
4709+
)
4710+
)
4711+
else:
4712+
await asyncio.shield(
4713+
Chats.upsert_message_to_chat_by_id_and_message_id(
4714+
metadata['chat_id'],
4715+
metadata['message_id'],
4716+
{'done': True},
4717+
)
4718+
)
4719+
except Exception:
4720+
pass
4721+
raise # re-raise CancelledError for proper propagation
47144722

47154723
if response.background is not None:
47164724
await response.background()

0 commit comments

Comments
 (0)