-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
executable file
·65 lines (51 loc) · 2.02 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import argparse
import os
import uvicorn
from fastapi import FastAPI
from ht_indexer_api.ht_indexer_api import HTSolrAPI
from ht_utils.ht_logger import get_ht_logger
logger = get_ht_logger(name=__name__)
def main():
parser = argparse.ArgumentParser()
parser.add_argument(
"--host", help="HT indexer API host", required=True, default="0.0.0.0"
)
parser.add_argument(
"--port", help="HT indexer API port", required=True, default=8081
)
# If you run main script from poetry/python solr_host = localhost
# If you run main script from docker solr_host = host.docker.internal
parser.add_argument(
"--solr_url",
help="",
required=True,
default="http://localhost:8983/solr/#/core-x/",
)
args = parser.parse_args()
app = FastAPI(title="HTSolrAPI", description="Indexing XML files in Solr server")
@app.on_event("startup")
def solr_startup():
"""
Startup the API to index documents in Solr
"""
logger.info("Connecting with Solr server")
global solr_api
solr_user = os.getenv("SOLR_USER")
solr_password = os.getenv("SOLR_PASSWORD")
solr_api = HTSolrAPI(url=args.solr_url, user=solr_user, password=solr_password)
@app.get("/ping")
def check_solr():
response = solr_api.get_solr_status()
return {"status": response.status_code, "description": response.headers}
@app.post("/solrIndexing/")
def solr_indexing(path, list_documents: list = None):
"""Read an XML and feed into SOLR for indexing"""
response = solr_api.index_documents(path, list_documents=list_documents)
return {"status": response.status_code, "description": response.headers}
@app.post("/solrQuery/")
def solr_query_id(query):
response = solr_api.get_documents(query, response_format="json")
return {"status": response.status_code, "description": response.headers}
uvicorn.run(app, host=args.host, port=int(args.port))
if __name__ == "__main__":
main()