diff options
author | Joshua Watt <JPEWhacker@gmail.com> | 2023-11-03 08:26:26 -0600 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2023-11-09 17:33:02 +0000 |
commit | cfbb1d2cc01565610ba06a755e10425ff2076d9b (patch) | |
tree | 0e703d7210246573d50e1b07fd505c0001a9ae17 /bitbake/lib/bb | |
parent | baa3e5391daf41b6dd6e914a112abb00d3517da1 (diff) | |
download | poky-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.py | 11 |
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 @@ | |||
7 | import asyncio | 7 | import asyncio |
8 | import itertools | 8 | import itertools |
9 | import json | 9 | import json |
10 | from datetime import datetime | ||
10 | from .exceptions import ClientError, ConnectionClosedError | 11 | from .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 | ||
34 | def json_serialize(obj): | ||
35 | if isinstance(obj, datetime): | ||
36 | return obj.isoformat() | ||
37 | raise TypeError("Type %s not serializeable" % type(obj)) | ||
38 | |||
39 | |||
33 | class StreamConnection(object): | 40 | class 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() |