mirror of
https://github.com/RockChinQ/QChatGPT.git
synced 2024-11-16 11:42:44 +08:00
feat: 标识符生成器模块
This commit is contained in:
parent
998d07f3b4
commit
3f29464dbd
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -30,4 +30,5 @@ qcapi
|
|||
claude.json
|
||||
bard.json
|
||||
/*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
|
||||
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(
|
||||
'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
|
||||
)
|
||||
""")
|
||||
print('Database initialized.')
|
||||
# print('Database initialized.')
|
||||
|
||||
# session持久化
|
||||
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)
|
Loading…
Reference in New Issue
Block a user