summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb
diff options
context:
space:
mode:
authorJoshua Watt <JPEWhacker@gmail.com>2023-11-03 08:26:26 -0600
committerRichard Purdie <richard.purdie@linuxfoundation.org>2023-11-09 17:33:02 +0000
commitcfbb1d2cc01565610ba06a755e10425ff2076d9b (patch)
tree0e703d7210246573d50e1b07fd505c0001a9ae17 /bitbake/lib/bb
parentbaa3e5391daf41b6dd6e914a112abb00d3517da1 (diff)
downloadpoky-cfbb1d2cc01565610ba06a755e10425ff2076d9b.tar.gz
bitbake: hashserv: Add SQLalchemy backend
Adds an SQLAlchemy backend to the server. While this database backend is slower than the more direct sqlite backend, it easily supports just about any SQL server, which is useful for large scale deployments. (Bitbake rev: e0b73466dd7478c77c82f46879246c1b68b228c0) Signed-off-by: Joshua Watt <JPEWhacker@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb')
-rw-r--r--bitbake/lib/bb/asyncrpc/connection.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/bitbake/lib/bb/asyncrpc/connection.py b/bitbake/lib/bb/asyncrpc/connection.py
index a10628f75a..7f0cf6ba96 100644
--- a/bitbake/lib/bb/asyncrpc/connection.py
+++ b/bitbake/lib/bb/asyncrpc/connection.py
@@ -7,6 +7,7 @@
7import asyncio 7import asyncio
8import itertools 8import itertools
9import json 9import json
10from datetime import datetime
10from .exceptions import ClientError, ConnectionClosedError 11from .exceptions import ClientError, ConnectionClosedError
11 12
12 13
@@ -30,6 +31,12 @@ def chunkify(msg, max_chunk):
30 yield "\n" 31 yield "\n"
31 32
32 33
34def json_serialize(obj):
35 if isinstance(obj, datetime):
36 return obj.isoformat()
37 raise TypeError("Type %s not serializeable" % type(obj))
38
39
33class StreamConnection(object): 40class StreamConnection(object):
34 def __init__(self, reader, writer, timeout, max_chunk=DEFAULT_MAX_CHUNK): 41 def __init__(self, reader, writer, timeout, max_chunk=DEFAULT_MAX_CHUNK):
35 self.reader = reader 42 self.reader = reader
@@ -42,7 +49,7 @@ class StreamConnection(object):
42 return self.writer.get_extra_info("peername") 49 return self.writer.get_extra_info("peername")
43 50
44 async def send_message(self, msg): 51 async def send_message(self, msg):
45 for c in chunkify(json.dumps(msg), self.max_chunk): 52 for c in chunkify(json.dumps(msg, default=json_serialize), self.max_chunk):
46 self.writer.write(c.encode("utf-8")) 53 self.writer.write(c.encode("utf-8"))
47 await self.writer.drain() 54 await self.writer.drain()
48 55
@@ -105,7 +112,7 @@ class WebsocketConnection(object):
105 return ":".join(str(s) for s in self.socket.remote_address) 112 return ":".join(str(s) for s in self.socket.remote_address)
106 113
107 async def send_message(self, msg): 114 async def send_message(self, msg):
108 await self.send(json.dumps(msg)) 115 await self.send(json.dumps(msg, default=json_serialize))
109 116
110 async def recv_message(self): 117 async def recv_message(self):
111 m = await self.recv() 118 m = await self.recv()