mirror of
https://github.com/langbot-app/LangBot.git
synced 2025-11-25 03:15:06 +08:00
feat: 标识符生成器模块
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -30,4 +30,5 @@ qcapi
|
|||||||
claude.json
|
claude.json
|
||||||
bard.json
|
bard.json
|
||||||
/*yaml
|
/*yaml
|
||||||
!/docker-compose.yaml
|
!/docker-compose.yaml
|
||||||
|
res/instance_id.json
|
||||||
5
main.py
5
main.py
@@ -145,6 +145,11 @@ async def start_process(first_time_init=False):
|
|||||||
global known_exception_caught
|
global known_exception_caught
|
||||||
import pkg.utils.context
|
import pkg.utils.context
|
||||||
|
|
||||||
|
# 计算host和instance标识符
|
||||||
|
import pkg.audit.identifier
|
||||||
|
pkg.audit.identifier.init()
|
||||||
|
pkg.audit.identifier.print_out()
|
||||||
|
|
||||||
# 加载配置
|
# 加载配置
|
||||||
cfg_inst: pymodule_cfg.PythonModuleConfigFile = pymodule_cfg.PythonModuleConfigFile(
|
cfg_inst: pymodule_cfg.PythonModuleConfigFile = pymodule_cfg.PythonModuleConfigFile(
|
||||||
'config.py',
|
'config.py',
|
||||||
|
|||||||
83
pkg/audit/identifier.py
Normal file
83
pkg/audit/identifier.py
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
import os
|
||||||
|
import uuid
|
||||||
|
import json
|
||||||
|
import time
|
||||||
|
|
||||||
|
|
||||||
|
identifier = {
|
||||||
|
'host_id': '',
|
||||||
|
'instance_id': '',
|
||||||
|
'host_create_ts': 0,
|
||||||
|
'instance_create_ts': 0,
|
||||||
|
}
|
||||||
|
|
||||||
|
HOST_ID_FILE = os.path.expanduser('~/.qchatgpt/host_id.json')
|
||||||
|
INSTANCE_ID_FILE = 'res/instance_id.json'
|
||||||
|
|
||||||
|
def init():
|
||||||
|
global identifier
|
||||||
|
|
||||||
|
if not os.path.exists(os.path.expanduser('~/.qchatgpt')):
|
||||||
|
os.mkdir(os.path.expanduser('~/.qchatgpt'))
|
||||||
|
|
||||||
|
if not os.path.exists(HOST_ID_FILE):
|
||||||
|
new_host_id = 'host_'+str(uuid.uuid4())
|
||||||
|
new_host_create_ts = int(time.time())
|
||||||
|
|
||||||
|
with open(HOST_ID_FILE, 'w') as f:
|
||||||
|
json.dump({
|
||||||
|
'host_id': new_host_id,
|
||||||
|
'host_create_ts': new_host_create_ts
|
||||||
|
}, f)
|
||||||
|
|
||||||
|
identifier['host_id'] = new_host_id
|
||||||
|
identifier['host_create_ts'] = new_host_create_ts
|
||||||
|
else:
|
||||||
|
loaded_host_id = ''
|
||||||
|
loaded_host_create_ts = 0
|
||||||
|
|
||||||
|
with open(HOST_ID_FILE, 'r') as f:
|
||||||
|
file_content = json.load(f)
|
||||||
|
loaded_host_id = file_content['host_id']
|
||||||
|
loaded_host_create_ts = file_content['host_create_ts']
|
||||||
|
|
||||||
|
identifier['host_id'] = loaded_host_id
|
||||||
|
identifier['host_create_ts'] = loaded_host_create_ts
|
||||||
|
|
||||||
|
# 检查实例 id
|
||||||
|
if os.path.exists(INSTANCE_ID_FILE):
|
||||||
|
instance_id = {}
|
||||||
|
with open(INSTANCE_ID_FILE, 'r') as f:
|
||||||
|
instance_id = json.load(f)
|
||||||
|
|
||||||
|
if instance_id['host_id'] != identifier['host_id']: # 如果实例 id 不是当前主机的,删除
|
||||||
|
os.remove(INSTANCE_ID_FILE)
|
||||||
|
|
||||||
|
if not os.path.exists(INSTANCE_ID_FILE):
|
||||||
|
new_instance_id = 'instance_'+str(uuid.uuid4())
|
||||||
|
new_instance_create_ts = int(time.time())
|
||||||
|
|
||||||
|
with open(INSTANCE_ID_FILE, 'w') as f:
|
||||||
|
json.dump({
|
||||||
|
'host_id': identifier['host_id'],
|
||||||
|
'instance_id': new_instance_id,
|
||||||
|
'instance_create_ts': new_instance_create_ts
|
||||||
|
}, f)
|
||||||
|
|
||||||
|
identifier['instance_id'] = new_instance_id
|
||||||
|
identifier['instance_create_ts'] = new_instance_create_ts
|
||||||
|
else:
|
||||||
|
loaded_instance_id = ''
|
||||||
|
loaded_instance_create_ts = 0
|
||||||
|
|
||||||
|
with open(INSTANCE_ID_FILE, 'r') as f:
|
||||||
|
file_content = json.load(f)
|
||||||
|
loaded_instance_id = file_content['instance_id']
|
||||||
|
loaded_instance_create_ts = file_content['instance_create_ts']
|
||||||
|
|
||||||
|
identifier['instance_id'] = loaded_instance_id
|
||||||
|
identifier['instance_create_ts'] = loaded_instance_create_ts
|
||||||
|
|
||||||
|
def print_out():
|
||||||
|
global identifier
|
||||||
|
print(identifier)
|
||||||
@@ -91,7 +91,7 @@ class DatabaseManager:
|
|||||||
`json` text not null
|
`json` text not null
|
||||||
)
|
)
|
||||||
""")
|
""")
|
||||||
print('Database initialized.')
|
# print('Database initialized.')
|
||||||
|
|
||||||
# session持久化
|
# session持久化
|
||||||
def persistence_session(self, subject_type: str, subject_number: int, create_timestamp: int,
|
def persistence_session(self, subject_type: str, subject_number: int, create_timestamp: int,
|
||||||
|
|||||||
43
tests/identifier_test/host_identifier.py
Normal file
43
tests/identifier_test/host_identifier.py
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
import os
|
||||||
|
import uuid
|
||||||
|
import json
|
||||||
|
|
||||||
|
# 向 ~/.qchatgpt 写入一个 标识符
|
||||||
|
|
||||||
|
if not os.path.exists(os.path.expanduser('~/.qchatgpt')):
|
||||||
|
os.mkdir(os.path.expanduser('~/.qchatgpt'))
|
||||||
|
|
||||||
|
identifier = {
|
||||||
|
"host_id": "host_"+str(uuid.uuid4()),
|
||||||
|
}
|
||||||
|
|
||||||
|
if not os.path.exists(os.path.expanduser('~/.qchatgpt/host.json')):
|
||||||
|
print('create ~/.qchatgpt/host.json')
|
||||||
|
with open(os.path.expanduser('~/.qchatgpt/host.json'), 'w') as f:
|
||||||
|
json.dump(identifier, f)
|
||||||
|
else:
|
||||||
|
print('load ~/.qchatgpt/host.json')
|
||||||
|
with open(os.path.expanduser('~/.qchatgpt/host.json'), 'r') as f:
|
||||||
|
identifier = json.load(f)
|
||||||
|
|
||||||
|
print(identifier)
|
||||||
|
|
||||||
|
instance_id = {
|
||||||
|
"host_id": identifier['host_id'],
|
||||||
|
"instance_id": "instance_"+str(uuid.uuid4()),
|
||||||
|
}
|
||||||
|
|
||||||
|
# 实例 id
|
||||||
|
if os.path.exists("res/instance_id.json"):
|
||||||
|
with open("res/instance_id.json", 'r') as f:
|
||||||
|
instance_id = json.load(f)
|
||||||
|
|
||||||
|
if instance_id['host_id'] != identifier['host_id']:
|
||||||
|
os.remove("res/instance_id.json")
|
||||||
|
|
||||||
|
if not os.path.exists("res/instance_id.json"):
|
||||||
|
print('create res/instance_id.json')
|
||||||
|
with open("res/instance_id.json", 'w') as f:
|
||||||
|
json.dump(instance_id, f)
|
||||||
|
|
||||||
|
print(instance_id)
|
||||||
Reference in New Issue
Block a user