Made get / set async.
Some checks are pending
Build Base Application / Build (push) Waiting to run

This commit is contained in:
retoor 2025-05-31 13:41:45 +02:00
parent fb42dba59f
commit f8a046ddab

View File

@ -162,6 +162,13 @@ class BaseApplication(RPCApplication):
class WebDbApplication(BaseApplication): class WebDbApplication(BaseApplication):
@property
def loop(self):
return asyncio.get_event_loop()
async def run_in_executor(self, func, *args, **kwargs):
return await self.loop.run_in_executor(None, func, *args, **kwargs)
def __init__( def __init__(
self, db=None, db_web=False, db_path="sqlite:///:memory:", *args, **kwargs self, db=None, db_web=False, db_path="sqlite:///:memory:", *args, **kwargs
@ -235,14 +242,14 @@ class WebDbApplication(BaseApplication):
return web.json_response(response) return web.json_response(response)
async def set(self, key, value): async def set(self, key, value):
return self.sset(key, value) return await self.run_in_executor(self.sset, key, value)
def sset(self, key, value): def sset(self, key, value):
value = json.dumps(value, default=str) value = json.dumps(value, default=str)
return self.db["kv"].upsert({"key": key, "value": value}, ["key"]) return self.db["kv"].upsert({"key": key, "value": value}, ["key"])
async def get(self, key, default=None): async def get(self, key, default=None):
return self.sget(key, default) return await self.run_in_executor(self.sget,key, default)
def sget(self, key, default=None): def sget(self, key, default=None):
record = self.db["kv"].find_one(key=key) record = self.db["kv"].find_one(key=key)