From a4266afc9bc5d87eb0486581c24d3abbd2375c10 Mon Sep 17 00:00:00 2001 From: Philipp Metzner Date: Mon, 22 Jul 2024 12:21:10 +0200 Subject: [PATCH] Another wrapping test with global ThreadPoolExecutor --- back/boxtribute_server/graph_ql/loaders.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/back/boxtribute_server/graph_ql/loaders.py b/back/boxtribute_server/graph_ql/loaders.py index 9f19da45a..961553877 100644 --- a/back/boxtribute_server/graph_ql/loaders.py +++ b/back/boxtribute_server/graph_ql/loaders.py @@ -1,5 +1,6 @@ import asyncio from collections import defaultdict +from concurrent.futures import ThreadPoolExecutor from datetime import datetime from functools import partial @@ -38,6 +39,9 @@ def load(self, key): return super().load(key) +executor = ThreadPoolExecutor(max_workers=5) + + async def select( model, /, *conditions, fields=None, join_kwargs=None, group_field=None ): @@ -53,9 +57,8 @@ def utility_function(*conditions, fields, join_kwargs): query = query.group_by(group_field) return list(query.iterator()) - return await asyncio.to_thread( - utility_function, *conditions, fields=fields, join_kwargs=join_kwargs - ) + f = partial(utility_function, *conditions, fields=fields, join_kwargs=join_kwargs) + return await asyncio.get_running_loop().run_in_executor(executor, f) class SimpleDataLoader(DataLoader):