Skip to content

Commit 5269e41

Browse files
committed
perf: use asyncio.to_thread for db calls in event emitter
1 parent 84cc2dd commit 5269e41

1 file changed

Lines changed: 20 additions & 10 deletions

File tree

backend/open_webui/socket/main.py

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -797,14 +797,16 @@ async def __event_emitter__(event_data):
797797
):
798798

799799
if "type" in event_data and event_data["type"] == "status":
800-
Chats.add_message_status_to_chat_by_id_and_message_id(
800+
await asyncio.to_thread(
801+
Chats.add_message_status_to_chat_by_id_and_message_id,
801802
request_info["chat_id"],
802803
request_info["message_id"],
803804
event_data.get("data", {}),
804805
)
805806

806807
if "type" in event_data and event_data["type"] == "message":
807-
message = Chats.get_message_by_id_and_message_id(
808+
message = await asyncio.to_thread(
809+
Chats.get_message_by_id_and_message_id,
808810
request_info["chat_id"],
809811
request_info["message_id"],
810812
)
@@ -813,7 +815,8 @@ async def __event_emitter__(event_data):
813815
content = message.get("content", "")
814816
content += event_data.get("data", {}).get("content", "")
815817

816-
Chats.upsert_message_to_chat_by_id_and_message_id(
818+
await asyncio.to_thread(
819+
Chats.upsert_message_to_chat_by_id_and_message_id,
817820
request_info["chat_id"],
818821
request_info["message_id"],
819822
{
@@ -824,7 +827,8 @@ async def __event_emitter__(event_data):
824827
if "type" in event_data and event_data["type"] == "replace":
825828
content = event_data.get("data", {}).get("content", "")
826829

827-
Chats.upsert_message_to_chat_by_id_and_message_id(
830+
await asyncio.to_thread(
831+
Chats.upsert_message_to_chat_by_id_and_message_id,
828832
request_info["chat_id"],
829833
request_info["message_id"],
830834
{
@@ -833,15 +837,17 @@ async def __event_emitter__(event_data):
833837
)
834838

835839
if "type" in event_data and event_data["type"] == "embeds":
836-
message = Chats.get_message_by_id_and_message_id(
840+
message = await asyncio.to_thread(
841+
Chats.get_message_by_id_and_message_id,
837842
request_info["chat_id"],
838843
request_info["message_id"],
839844
)
840845

841846
embeds = event_data.get("data", {}).get("embeds", [])
842847
embeds.extend(message.get("embeds", []))
843848

844-
Chats.upsert_message_to_chat_by_id_and_message_id(
849+
await asyncio.to_thread(
850+
Chats.upsert_message_to_chat_by_id_and_message_id,
845851
request_info["chat_id"],
846852
request_info["message_id"],
847853
{
@@ -850,15 +856,17 @@ async def __event_emitter__(event_data):
850856
)
851857

852858
if "type" in event_data and event_data["type"] == "files":
853-
message = Chats.get_message_by_id_and_message_id(
859+
message = await asyncio.to_thread(
860+
Chats.get_message_by_id_and_message_id,
854861
request_info["chat_id"],
855862
request_info["message_id"],
856863
)
857864

858865
files = event_data.get("data", {}).get("files", [])
859866
files.extend(message.get("files", []))
860867

861-
Chats.upsert_message_to_chat_by_id_and_message_id(
868+
await asyncio.to_thread(
869+
Chats.upsert_message_to_chat_by_id_and_message_id,
862870
request_info["chat_id"],
863871
request_info["message_id"],
864872
{
@@ -869,15 +877,17 @@ async def __event_emitter__(event_data):
869877
if event_data.get("type") in ["source", "citation"]:
870878
data = event_data.get("data", {})
871879
if data.get("type") == None:
872-
message = Chats.get_message_by_id_and_message_id(
880+
message = await asyncio.to_thread(
881+
Chats.get_message_by_id_and_message_id,
873882
request_info["chat_id"],
874883
request_info["message_id"],
875884
)
876885

877886
sources = message.get("sources", [])
878887
sources.append(data)
879888

880-
Chats.upsert_message_to_chat_by_id_and_message_id(
889+
await asyncio.to_thread(
890+
Chats.upsert_message_to_chat_by_id_and_message_id,
881891
request_info["chat_id"],
882892
request_info["message_id"],
883893
{

0 commit comments

Comments
 (0)