v1.0.49: in-memory tracker (no file IO); traceback on tracker error; refreshInstances adds new items; no selectService on OK

This commit is contained in:
2026-07-27 09:26:39 +04:00
parent 1d306bf263
commit 7f6284bb46
5 changed files with 538 additions and 34 deletions
+5 -27
View File
@@ -1,12 +1,9 @@
"""Трекер созданных инстансов — только те что породило приложение."""
import json
import os
"""Трекер созданных инстансов — in-memory dict (один gunicorn worker)."""
import threading
_LOCK = threading.Lock()
_PATH = "/tmp/instances.json"
_INITIAL = {
_data = {
"408b7f96-6ed7-4985-be1b-f5bdcb6ab44d": {"svcId": 1, "displayName": "autotest-1", "instanceUid": "408b7f96-6ed7-4985-be1b-f5bdcb6ab44d"},
"884356cf-5212-4395-b56b-27c58a5fc1fa": {"svcId": 1, "displayName": "autotest-1-first", "instanceUid": "884356cf-5212-4395-b56b-27c58a5fc1fa"},
"6528854d-a4ea-428c-9fa4-68e85fa9b3ac": {"svcId": 1, "displayName": "curl-test-144834", "instanceUid": "6528854d-a4ea-428c-9fa4-68e85fa9b3ac"},
@@ -14,39 +11,20 @@ _INITIAL = {
}
def _load():
try:
with open(_PATH) as f:
return json.load(f)
except (FileNotFoundError, json.JSONDecodeError):
data = dict(_INITIAL)
_save(data)
return data
def _save(data):
with open(_PATH, "w") as f:
json.dump(data, f, indent=2)
def add(instance_uid, svc_id, display_name):
with _LOCK:
data = _load()
data[instance_uid] = {
_data[instance_uid] = {
"svcId": svc_id,
"displayName": display_name,
"instanceUid": instance_uid,
}
_save(data)
def remove(instance_uid):
with _LOCK:
data = _load()
data.pop(instance_uid, None)
_save(data)
_data.pop(instance_uid, None)
def list_all():
with _LOCK:
return list(_load().values())
return list(_data.values())