cloud: worker dispatch, DB abstraction, packaging 0.1.0, repo CI workflow
This commit is contained in:
1 parent
076ba01c74
commit
07ef869267
13 files changed
+1916
-9
No files matched your search
+20
-3
@@ -29,6 +29,8 @@ audit_log 三张表;本 server 用 projects/tasks 两张表,表名不冲突
|
||||
|
||||
启动:
|
||||
python3 -m cloud.server [--host 127.0.0.1] [--port 8765] [--db <路径>]
|
||||
后端由 CLOUD_DB_BACKEND 选(sqlite 默认;postgres 目前只是骨架,
|
||||
驱动缺失时启动即明确报错,见 cloud/db.py)。
|
||||
|
||||
测试用 create_server(db_path, host, port) 只返回 ThreadingHTTPServer
|
||||
实例,不自动 serve。
|
||||
@@ -47,6 +49,7 @@ from urllib.parse import parse_qs, urlparse
|
||||
from cloud.auth import AuthStore
|
||||
from cloud.cost import CostStore
|
||||
from cloud.db import connect as _db_connect
|
||||
from cloud.db import create_database as _create_database
|
||||
from cloud.kb import KBStore
|
||||
from cloud.memory import MemoryStore
|
||||
from cloud.oauth import (
|
||||
@@ -1157,9 +1160,19 @@ class CloudControlPlaneHandler(BaseHTTPRequestHandler):
|
||||
self._send_json(200, parse_slack_command(text))
|
||||
|
||||
|
||||
def create_server(db_path, host="127.0.0.1", port=8765):
|
||||
"""建 server 实例(不自动 serve,供测试与 __main__ 共用)。"""
|
||||
def create_server(db_path, host="127.0.0.1", port=8765, backend=None):
|
||||
"""建 server 实例(不自动 serve,供测试与 __main__ 共用)。
|
||||
|
||||
backend 为 None 时读环境变量 CLOUD_DB_BACKEND,未设则默认
|
||||
sqlite(旧行为不变)。选 postgres 时在建表之前就调用工厂:
|
||||
驱动缺失则初始化即抛明确错误(文案含 psycopg),启动即失败,
|
||||
绝不在运行时中途才炸、也绝不静默回落到 SQLite;Postgres
|
||||
目前只是骨架,即使驱动已装也尚未接通,见 cloud/db.py 与 README。
|
||||
"""
|
||||
db_path = str(db_path)
|
||||
# 后端校验必须在 init_db 之前:postgres 骨架不能先建 SQLite 表
|
||||
# 再失败,那会假装 sqlite 已可用。
|
||||
_create_database(backend=backend, db_path=db_path)
|
||||
init_db(db_path)
|
||||
# 确保 AuthStore 的三张表也存在,后续请求才能直接查 project_members。
|
||||
with _auth_store(db_path):
|
||||
@@ -1175,8 +1188,12 @@ def main(argv=None):
|
||||
parser.add_argument("--host", default="127.0.0.1")
|
||||
parser.add_argument("--port", type=int, default=8765)
|
||||
parser.add_argument("--db", default="cloud-control-plane.db")
|
||||
parser.add_argument("--db-backend", default=None,
|
||||
help="sqlite(默认)或 postgres;未给则读 "
|
||||
"CLOUD_DB_BACKEND 环境变量")
|
||||
args = parser.parse_args(argv)
|
||||
server = create_server(args.db, args.host, args.port)
|
||||
server = create_server(args.db, args.host, args.port,
|
||||
backend=args.db_backend)
|
||||
print(
|
||||
"cloud-control-plane listening on %s:%d db=%s"
|
||||
% (args.host, server.server_address[1], args.db),
|
||||
|
||||
Reference in new issue
Block a user