Skip to content

Commit 20abe18

Browse files
committed
fixing embedding calles
1 parent 9adfb29 commit 20abe18

1 file changed

Lines changed: 40 additions & 10 deletions

File tree

nedrexapi/routers/embeddings.py

Lines changed: 40 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from pydantic import Field as _Field
66
from langchain_neo4j import Neo4jGraph
77
import json
8+
import time
89

910
from nedrexapi.common import (
1011
_API_KEY_HEADER_ARG,
@@ -20,12 +21,13 @@
2021

2122
_NEO4J_PORT = _config[f'db.{_config["api.status"]}.neo4j_bolt_port_internal']
2223
_NEO4J_HOST = _config[f'db.{_config["api.status"]}.neo4j_name']
23-
_NEO4J_DRIVER = None
24-
25-
try:
26-
_NEO4J_DRIVER = Neo4jGraph(f"bolt://{_NEO4J_HOST}:{_NEO4J_PORT}", username="", password="", database='neo4j')
27-
except Exception as exc:
28-
logger.error("Failed to initialize Neo4j driver for embeddings routes: {}", exc)
24+
open_con = None
25+
# _NEO4J_DRIVER = None
26+
#
27+
# try:
28+
# _NEO4J_DRIVER = Neo4jGraph(f"bolt://{_NEO4J_HOST}:{_NEO4J_PORT}", username="", password="", database='neo4j')
29+
# except Exception as exc:
30+
# logger.error("Failed to initialize Neo4j driver for embeddings routes: {}", exc)
2931

3032
router = _APIRouter()
3133

@@ -37,13 +39,41 @@ class QueryEmbeddingRequest(_BaseModel):
3739

3840
DEFAULT_QUERY_EMBEDDING_REQUEST = QueryEmbeddingRequest()
3941

42+
def get_kg_connection() -> Neo4jGraph:
43+
global open_con
44+
NEO4J_URI = f'bolt://{_NEO4J_HOST}:7687'
45+
46+
retry = 10
47+
while retry > 0:
48+
try:
49+
if open_con is None:
50+
logger.debug(f"Opening connection to {NEO4J_URI}")
51+
open_con = Neo4jGraph(
52+
url=NEO4J_URI, username="", password="", database='neo4j'
53+
)
54+
if open_con is not None:
55+
return open_con
56+
except Exception:
57+
retry -= 1
58+
if retry == 0:
59+
logger.error(f"Failed to connect to Neo4j at {NEO4J_URI} after {10} retries!")
60+
return None
61+
time.sleep(5)
62+
63+
64+
def close_kg_connection():
65+
global open_con
66+
if open_con is not None:
67+
open_con.close()
68+
open_con = None
69+
70+
4071
def run_neo4j_query(neo4j_query, params={}):
41-
if _NEO4J_DRIVER is None:
42-
raise _HTTPException(status_code=503, detail="Embeddings backend is not configured.")
43-
res = _NEO4J_DRIVER.query(query=neo4j_query, params=params)
72+
kg = get_kg_connection()
73+
res = kg.query(query=neo4j_query, params=params)
74+
kg.close()
4475
return res
4576

46-
4777
def to_json(result):
4878
return json.dumps([json.loads(json.dumps(result, default=lambda o: dict(o)))]) + "\n"
4979

0 commit comments

Comments
 (0)