bugfix
This commit is contained in:
parent
77fc6eec6b
commit
f2691c26a7
46
build.sh
Normal file
46
build.sh
Normal file
@ -0,0 +1,46 @@
|
||||
i#!/usr/bin/env bash
|
||||
# clone from git@git.opencomputing.cn/yumoqing/vdb
|
||||
# git clone https://git.opencomputing.cn/yumoqing/vdb
|
||||
cdir=$(pwd)
|
||||
uname=$(id -un)
|
||||
gname=$(id -gn)
|
||||
sudo apt install redis-server
|
||||
python3 -m venv py3
|
||||
source py3/bin/activate
|
||||
pip install .
|
||||
pip install apppublic sqlor ahserver bricks-for-python
|
||||
mkdir $cdir/logs
|
||||
cd $cdir
|
||||
cat > $cdir/vdb.service <<EOF
|
||||
[Unit]
|
||||
Wants=systemd-networkd.service
|
||||
|
||||
[Service]
|
||||
User=$uname
|
||||
Group=$gname
|
||||
Type=forking
|
||||
WorkingDirectory=$cdir
|
||||
ExecStart=$cdir/start.sh
|
||||
ExecStop=$cdir/stop.sh
|
||||
StandardOutput=append:/var/log/vdb/vdb.log
|
||||
StandardError=append:/var/log/vdb/vdb.log
|
||||
SyslogIdentifier=vdb
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
cat > $cdir/start.sh <<EOF
|
||||
#!/usr/bin/bash
|
||||
cd $cdir
|
||||
$cdir/py3/bin/python $cdir/app/vdb.py -p 8887 -w $cdir &
|
||||
exit 0
|
||||
EOF
|
||||
cat > $cdir/stop.sh <<EOF
|
||||
PID=\$(lsof -t -i:9901)
|
||||
kill -9 \$PID
|
||||
EOF
|
||||
chmod +x $cdir/start.sh stop.sh
|
||||
sudo mkdir /var/log/vdb
|
||||
sudo cp vdb.service /etc/systemd/system
|
||||
sudo systemctl enable vdb
|
||||
sudo systemctl restart vdb
|
||||
20
pyproject.toml
Normal file
20
pyproject.toml
Normal file
@ -0,0 +1,20 @@
|
||||
[build-system]
|
||||
requires = ["setuptools>=61.0"]
|
||||
build-backend = "setuptools.build_meta"
|
||||
|
||||
[project]
|
||||
name = "vdb"
|
||||
version = "0.1.0"
|
||||
description = "向量数据库服务"
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.10"
|
||||
dependencies = [
|
||||
"apppublic",
|
||||
"sqlor",
|
||||
"ahserver",
|
||||
"pymilrus"
|
||||
]
|
||||
|
||||
[tool.setuptools.packages.find]
|
||||
where = ["."] # 声明在哪个目录下查找包,默认是当前目录
|
||||
include = ["vdb"] # 包含哪些包
|
||||
0
vdb/__init__.py
Normal file
0
vdb/__init__.py
Normal file
125
vdb/init.py
Normal file
125
vdb/init.py
Normal file
@ -0,0 +1,125 @@
|
||||
from traceback import format_exc
|
||||
from functools import partial
|
||||
from ahserver.serverenv import ServerEnv
|
||||
from appPublic.worker import awaitify
|
||||
from appPublic.registerfunction import RegisterFunction
|
||||
from appPublic.log import debug, exception
|
||||
from appPublic.jsonConfig import getConfig
|
||||
from .milvus import MilvusManager
|
||||
|
||||
def ownerparting(data):
|
||||
if data.get('ownerid'):
|
||||
return data.get('ownerid')
|
||||
return '_default'
|
||||
|
||||
async def create_collection(request, params_kw, *args, **kwargs):
|
||||
colname = params_kw.colname
|
||||
fields = params_kw.fields
|
||||
description = params_kw.description or ""
|
||||
env = request._run_ns
|
||||
f = awaitify(env.vdb.create_collection)
|
||||
try:
|
||||
r = await f(colname, fields, description)
|
||||
return {
|
||||
"status":"SUCCEEDED",
|
||||
}
|
||||
except Exception as e:
|
||||
exception(f'{e}, {format_exc()}')
|
||||
return {
|
||||
"status":"FAILED",
|
||||
"error": f"{e}"
|
||||
}
|
||||
|
||||
async def drop_collection(request, params_kw, *args, **kwargs):
|
||||
colname = params_kw.colname
|
||||
env = request._run_ns
|
||||
f = awaitify(env.vdb.drop_collection)
|
||||
try:
|
||||
r = awiat f(colname)
|
||||
return {
|
||||
"status": "SUCCEEDED"
|
||||
}
|
||||
except Exception as e:
|
||||
exception(f"{e}, {format_exc()}")
|
||||
return {
|
||||
"status": "FAILED",
|
||||
"error": f"{e}"
|
||||
}
|
||||
|
||||
async def upsert(request, params_kw, *args, **kwargs):
|
||||
colname = params_kw.colname
|
||||
data = params_kw.data
|
||||
if not isinstance(data, list):
|
||||
data = [data]
|
||||
|
||||
env = request._run_ns
|
||||
f = awaitify(env.vdb.upsert)
|
||||
try:
|
||||
r = awiat f(colname, data)
|
||||
return {
|
||||
"status": "SUCCEEDED"
|
||||
}
|
||||
except Exception as e:
|
||||
exception(f"{e}, {format_exc()}")
|
||||
return {
|
||||
"status": "FAILED",
|
||||
"error": f"{e}"
|
||||
}
|
||||
|
||||
async def delete(request, params_kw, *args, **kwargs):
|
||||
colname = params_kw.colname
|
||||
pks = params_kw.pks
|
||||
|
||||
env = request._run_ns
|
||||
f = awaitify(env.vdb.delete)
|
||||
try:
|
||||
r = awiat f(colname, pks)
|
||||
return {
|
||||
"status": "SUCCEEDED"
|
||||
}
|
||||
except Exception as e:
|
||||
exception(f"{e}, {format_exc()}")
|
||||
return {
|
||||
"status": "FAILED",
|
||||
"error": f"{e}"
|
||||
}
|
||||
|
||||
async def query(request, params_kw, *args, **kwargs):
|
||||
colname = params_kw.colname
|
||||
vector=None, expr=None, pagerows=80, page=1, output_fields
|
||||
vector = params_kw.vector
|
||||
expr = params_kw.expr
|
||||
pagerows = params_kw.pagerows or 80
|
||||
page = params_kw.page or 1
|
||||
output_fields = params_kw.output_fields
|
||||
|
||||
env = request._run_ns
|
||||
f1 = awaitify(env.vdb.drop_collection)
|
||||
try:
|
||||
f = partial(f1, colname, vector=vector, expr=expr, pagerows=pagerows, page=page, output_fields=output_fields)
|
||||
r = awiat f()
|
||||
return {
|
||||
"status": "SUCCEEDED"
|
||||
"data": r
|
||||
}
|
||||
except Exception as e:
|
||||
exception(f"{e}, {format_exc()}")
|
||||
return {
|
||||
"status": "FAILED",
|
||||
"error": f"{e}"
|
||||
}
|
||||
|
||||
def load_vdb():
|
||||
config = getConfig()
|
||||
vdb = None
|
||||
vdb_type = config.vdb_type
|
||||
if vdb_type == 'milvus':
|
||||
vdb = MilvusManager(partitionize=ownerparting)
|
||||
env = ServerEnv()
|
||||
env.vdb = vdb
|
||||
rf = RegisterFunction()
|
||||
rf.register('create_collection', create_collection)
|
||||
rf.register('drop_collection', drop_collection)
|
||||
rf.register('upsert', upsert)
|
||||
rf.register('delete', delete)
|
||||
rf.register('query', query)
|
||||
Loading…
x
Reference in New Issue
Block a user