mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-04-29 02:23:44 +02:00
Feature/librarian (#307)
* Bring QDrant up-to-date * Tables for data from queue outputs - Pass single Pulsar client to everything in gateway & librarian - Pulsar listener-name support in gateway - PDF and text load working in librarian * Complete Cassandra schema * Add librarian support to templates
This commit is contained in:
parent
f350abb415
commit
f7df2df266
35 changed files with 500 additions and 145 deletions
|
|
@ -7,10 +7,10 @@ from . endpoint import ServiceEndpoint
|
|||
from . requestor import ServiceRequestor
|
||||
|
||||
class AgentRequestor(ServiceRequestor):
|
||||
def __init__(self, pulsar_host, timeout, auth):
|
||||
def __init__(self, pulsar_client, timeout, auth):
|
||||
|
||||
super(AgentRequestor, self).__init__(
|
||||
pulsar_host=pulsar_host,
|
||||
pulsar_client=pulsar_client,
|
||||
request_queue=agent_request_queue,
|
||||
response_queue=agent_response_queue,
|
||||
request_schema=AgentRequest,
|
||||
|
|
|
|||
|
|
@ -7,10 +7,10 @@ from . endpoint import ServiceEndpoint
|
|||
from . requestor import ServiceRequestor
|
||||
|
||||
class DbpediaRequestor(ServiceRequestor):
|
||||
def __init__(self, pulsar_host, timeout, auth):
|
||||
def __init__(self, pulsar_client, timeout, auth):
|
||||
|
||||
super(DbpediaRequestor, self).__init__(
|
||||
pulsar_host=pulsar_host,
|
||||
pulsar_client=pulsar_client,
|
||||
request_queue=dbpedia_lookup_request_queue,
|
||||
response_queue=dbpedia_lookup_response_queue,
|
||||
request_schema=LookupRequest,
|
||||
|
|
|
|||
|
|
@ -15,17 +15,17 @@ from . serialize import to_subgraph
|
|||
class DocumentEmbeddingsLoadEndpoint(SocketEndpoint):
|
||||
|
||||
def __init__(
|
||||
self, pulsar_host, auth, path="/api/v1/load/document-embeddings",
|
||||
self, pulsar_client, auth, path="/api/v1/load/document-embeddings",
|
||||
):
|
||||
|
||||
super(DocumentEmbeddingsLoadEndpoint, self).__init__(
|
||||
endpoint_path=path, auth=auth,
|
||||
)
|
||||
|
||||
self.pulsar_host=pulsar_host
|
||||
self.pulsar_client=pulsar_client
|
||||
|
||||
self.publisher = Publisher(
|
||||
self.pulsar_host, document_embeddings_store_queue,
|
||||
self.pulsar_client, document_embeddings_store_queue,
|
||||
schema=JsonSchema(DocumentEmbeddings)
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -14,17 +14,18 @@ from . serialize import serialize_document_embeddings
|
|||
class DocumentEmbeddingsStreamEndpoint(SocketEndpoint):
|
||||
|
||||
def __init__(
|
||||
self, pulsar_host, auth, path="/api/v1/stream/document-embeddings"
|
||||
self, pulsar_client, auth,
|
||||
path="/api/v1/stream/document-embeddings"
|
||||
):
|
||||
|
||||
super(DocumentEmbeddingsStreamEndpoint, self).__init__(
|
||||
endpoint_path=path, auth=auth,
|
||||
)
|
||||
|
||||
self.pulsar_host=pulsar_host
|
||||
self.pulsar_client=pulsar_client
|
||||
|
||||
self.subscriber = Subscriber(
|
||||
self.pulsar_host, document_embeddings_store_queue,
|
||||
self.pulsar_client, document_embeddings_store_queue,
|
||||
"api-gateway", "api-gateway",
|
||||
schema=JsonSchema(DocumentEmbeddings)
|
||||
)
|
||||
|
|
|
|||
|
|
@ -8,10 +8,10 @@ from . sender import ServiceSender
|
|||
from . serialize import to_subgraph
|
||||
|
||||
class DocumentLoadSender(ServiceSender):
|
||||
def __init__(self, pulsar_host):
|
||||
def __init__(self, pulsar_client):
|
||||
|
||||
super(DocumentLoadSender, self).__init__(
|
||||
pulsar_host=pulsar_host,
|
||||
pulsar_client=pulsar_client,
|
||||
request_queue=document_ingest_queue,
|
||||
request_schema=Document,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -7,10 +7,10 @@ from . endpoint import ServiceEndpoint
|
|||
from . requestor import ServiceRequestor
|
||||
|
||||
class DocumentRagRequestor(ServiceRequestor):
|
||||
def __init__(self, pulsar_host, timeout, auth):
|
||||
def __init__(self, pulsar_client, timeout, auth):
|
||||
|
||||
super(DocumentRagRequestor, self).__init__(
|
||||
pulsar_host=pulsar_host,
|
||||
pulsar_client=pulsar_client,
|
||||
request_queue=document_rag_request_queue,
|
||||
response_queue=document_rag_response_queue,
|
||||
request_schema=DocumentRagQuery,
|
||||
|
|
|
|||
|
|
@ -7,10 +7,10 @@ from . endpoint import ServiceEndpoint
|
|||
from . requestor import ServiceRequestor
|
||||
|
||||
class EmbeddingsRequestor(ServiceRequestor):
|
||||
def __init__(self, pulsar_host, timeout, auth):
|
||||
def __init__(self, pulsar_client, timeout, auth):
|
||||
|
||||
super(EmbeddingsRequestor, self).__init__(
|
||||
pulsar_host=pulsar_host,
|
||||
pulsar_client=pulsar_client,
|
||||
request_queue=embeddings_request_queue,
|
||||
response_queue=embeddings_response_queue,
|
||||
request_schema=EmbeddingsRequest,
|
||||
|
|
|
|||
|
|
@ -7,10 +7,10 @@ from . endpoint import ServiceEndpoint
|
|||
from . requestor import ServiceRequestor
|
||||
|
||||
class EncyclopediaRequestor(ServiceRequestor):
|
||||
def __init__(self, pulsar_host, timeout, auth):
|
||||
def __init__(self, pulsar_client, timeout, auth):
|
||||
|
||||
super(EncyclopediaRequestor, self).__init__(
|
||||
pulsar_host=pulsar_host,
|
||||
pulsar_client=pulsar_client,
|
||||
request_queue=encyclopedia_lookup_request_queue,
|
||||
response_queue=encyclopedia_lookup_response_queue,
|
||||
request_schema=LookupRequest,
|
||||
|
|
|
|||
|
|
@ -15,17 +15,17 @@ from . serialize import to_subgraph, to_value
|
|||
class GraphEmbeddingsLoadEndpoint(SocketEndpoint):
|
||||
|
||||
def __init__(
|
||||
self, pulsar_host, auth, path="/api/v1/load/graph-embeddings",
|
||||
self, pulsar_client, auth, path="/api/v1/load/graph-embeddings",
|
||||
):
|
||||
|
||||
super(GraphEmbeddingsLoadEndpoint, self).__init__(
|
||||
endpoint_path=path, auth=auth,
|
||||
)
|
||||
|
||||
self.pulsar_host=pulsar_host
|
||||
self.pulsar_client=pulsar_client
|
||||
|
||||
self.publisher = Publisher(
|
||||
self.pulsar_host, graph_embeddings_store_queue,
|
||||
self.pulsar_client, graph_embeddings_store_queue,
|
||||
schema=JsonSchema(GraphEmbeddings)
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -8,10 +8,10 @@ from . requestor import ServiceRequestor
|
|||
from . serialize import serialize_value
|
||||
|
||||
class GraphEmbeddingsQueryRequestor(ServiceRequestor):
|
||||
def __init__(self, pulsar_host, timeout, auth):
|
||||
def __init__(self, pulsar_client, timeout, auth):
|
||||
|
||||
super(GraphEmbeddingsQueryRequestor, self).__init__(
|
||||
pulsar_host=pulsar_host,
|
||||
pulsar_client=pulsar_client,
|
||||
request_queue=graph_embeddings_request_queue,
|
||||
response_queue=graph_embeddings_response_queue,
|
||||
request_schema=GraphEmbeddingsRequest,
|
||||
|
|
|
|||
|
|
@ -14,17 +14,17 @@ from . serialize import serialize_graph_embeddings
|
|||
class GraphEmbeddingsStreamEndpoint(SocketEndpoint):
|
||||
|
||||
def __init__(
|
||||
self, pulsar_host, auth, path="/api/v1/stream/graph-embeddings"
|
||||
self, pulsar_client, auth, path="/api/v1/stream/graph-embeddings"
|
||||
):
|
||||
|
||||
super(GraphEmbeddingsStreamEndpoint, self).__init__(
|
||||
endpoint_path=path, auth=auth,
|
||||
)
|
||||
|
||||
self.pulsar_host=pulsar_host
|
||||
self.pulsar_client=pulsar_client
|
||||
|
||||
self.subscriber = Subscriber(
|
||||
self.pulsar_host, graph_embeddings_store_queue,
|
||||
self.pulsar_client, graph_embeddings_store_queue,
|
||||
"api-gateway", "api-gateway",
|
||||
schema=JsonSchema(GraphEmbeddings)
|
||||
)
|
||||
|
|
|
|||
|
|
@ -7,10 +7,10 @@ from . endpoint import ServiceEndpoint
|
|||
from . requestor import ServiceRequestor
|
||||
|
||||
class GraphRagRequestor(ServiceRequestor):
|
||||
def __init__(self, pulsar_host, timeout, auth):
|
||||
def __init__(self, pulsar_client, timeout, auth):
|
||||
|
||||
super(GraphRagRequestor, self).__init__(
|
||||
pulsar_host=pulsar_host,
|
||||
pulsar_client=pulsar_client,
|
||||
request_queue=graph_rag_request_queue,
|
||||
response_queue=graph_rag_response_queue,
|
||||
request_schema=GraphRagQuery,
|
||||
|
|
|
|||
|
|
@ -7,10 +7,10 @@ from . endpoint import ServiceEndpoint
|
|||
from . requestor import ServiceRequestor
|
||||
|
||||
class InternetSearchRequestor(ServiceRequestor):
|
||||
def __init__(self, pulsar_host, timeout, auth):
|
||||
def __init__(self, pulsar_client, timeout, auth):
|
||||
|
||||
super(InternetSearchRequestor, self).__init__(
|
||||
pulsar_host=pulsar_host,
|
||||
pulsar_client=pulsar_client,
|
||||
request_queue=internet_search_request_queue,
|
||||
response_queue=internet_search_response_queue,
|
||||
request_schema=LookupRequest,
|
||||
|
|
|
|||
|
|
@ -9,10 +9,10 @@ from . serialize import serialize_document_package, serialize_document_info
|
|||
from . serialize import to_document_package, to_document_info, to_criteria
|
||||
|
||||
class LibrarianRequestor(ServiceRequestor):
|
||||
def __init__(self, pulsar_host, timeout, auth):
|
||||
def __init__(self, pulsar_client, timeout, auth):
|
||||
|
||||
super(LibrarianRequestor, self).__init__(
|
||||
pulsar_host=pulsar_host,
|
||||
pulsar_client=pulsar_client,
|
||||
request_queue=librarian_request_queue,
|
||||
response_queue=librarian_response_queue,
|
||||
request_schema=LibrarianRequest,
|
||||
|
|
@ -22,17 +22,19 @@ class LibrarianRequestor(ServiceRequestor):
|
|||
|
||||
def to_request(self, body):
|
||||
|
||||
print("TRR")
|
||||
if "document" in body:
|
||||
dp = to_document_package(body["document"])
|
||||
else:
|
||||
dp = None
|
||||
|
||||
print("GOT")
|
||||
if "criteria" in body:
|
||||
criteria = to_criteria(body["criteria"])
|
||||
else:
|
||||
criteria = None
|
||||
|
||||
limit = int(body.get("limit", 10000))
|
||||
print("ASLDKJ")
|
||||
|
||||
return LibrarianRequest(
|
||||
operation = body.get("operation", None),
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ MAX_QUEUE_SIZE = 10
|
|||
class MuxEndpoint(SocketEndpoint):
|
||||
|
||||
def __init__(
|
||||
self, pulsar_host, auth,
|
||||
self, pulsar_client, auth,
|
||||
services,
|
||||
path="/api/v1/socket",
|
||||
):
|
||||
|
|
|
|||
|
|
@ -9,10 +9,10 @@ from . endpoint import ServiceEndpoint
|
|||
from . requestor import ServiceRequestor
|
||||
|
||||
class PromptRequestor(ServiceRequestor):
|
||||
def __init__(self, pulsar_host, timeout, auth):
|
||||
def __init__(self, pulsar_client, timeout, auth):
|
||||
|
||||
super(PromptRequestor, self).__init__(
|
||||
pulsar_host=pulsar_host,
|
||||
pulsar_client=pulsar_client,
|
||||
request_queue=prompt_request_queue,
|
||||
response_queue=prompt_response_queue,
|
||||
request_schema=PromptRequest,
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ class ServiceRequestor:
|
|||
|
||||
def __init__(
|
||||
self,
|
||||
pulsar_host,
|
||||
pulsar_client,
|
||||
request_queue, request_schema,
|
||||
response_queue, response_schema,
|
||||
subscription="api-gateway", consumer_name="api-gateway",
|
||||
|
|
@ -22,12 +22,12 @@ class ServiceRequestor:
|
|||
):
|
||||
|
||||
self.pub = Publisher(
|
||||
pulsar_host, request_queue,
|
||||
schema=JsonSchema(request_schema)
|
||||
pulsar_client, request_queue,
|
||||
schema=JsonSchema(request_schema),
|
||||
)
|
||||
|
||||
self.sub = Subscriber(
|
||||
pulsar_host, response_queue,
|
||||
pulsar_client, response_queue,
|
||||
subscription, consumer_name,
|
||||
JsonSchema(response_schema)
|
||||
)
|
||||
|
|
@ -53,9 +53,11 @@ class ServiceRequestor:
|
|||
|
||||
q = self.sub.subscribe(id)
|
||||
|
||||
print("BOUT TO SEDN")
|
||||
await asyncio.to_thread(
|
||||
self.pub.send, id, self.to_request(request)
|
||||
)
|
||||
print("SENT")
|
||||
|
||||
while True:
|
||||
|
||||
|
|
|
|||
|
|
@ -15,13 +15,13 @@ class ServiceSender:
|
|||
|
||||
def __init__(
|
||||
self,
|
||||
pulsar_host,
|
||||
pulsar_client,
|
||||
request_queue, request_schema,
|
||||
):
|
||||
|
||||
self.pub = Publisher(
|
||||
pulsar_host, request_queue,
|
||||
schema=JsonSchema(request_schema)
|
||||
pulsar_client, request_queue,
|
||||
schema=JsonSchema(request_schema),
|
||||
)
|
||||
|
||||
async def start(self):
|
||||
|
|
@ -53,4 +53,3 @@ class ServiceSender:
|
|||
|
||||
return err
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -126,7 +126,7 @@ def to_document_package(x):
|
|||
|
||||
return DocumentPackage(
|
||||
metadata = to_subgraph(x["metadata"]),
|
||||
document = base64.b64decode(x["document"].encode("utf-8")),
|
||||
document = x.get("document", None),
|
||||
kind = x.get("kind", None),
|
||||
user = x.get("user", None),
|
||||
collection = x.get("collection", None),
|
||||
|
|
|
|||
|
|
@ -73,6 +73,11 @@ class Api:
|
|||
self.port = int(config.get("port", default_port))
|
||||
self.timeout = int(config.get("timeout", default_timeout))
|
||||
self.pulsar_host = config.get("pulsar_host", default_pulsar_host)
|
||||
self.pulsar_listener = config.get("pulsar_listener", None)
|
||||
|
||||
self.pulsar_client = pulsar.Client(
|
||||
self.pulsar_host, listener_name=self.pulsar_listener
|
||||
)
|
||||
|
||||
self.prometheus_url = config.get(
|
||||
"prometheus_url", default_prometheus_url,
|
||||
|
|
@ -91,58 +96,58 @@ class Api:
|
|||
|
||||
self.services = {
|
||||
"text-completion": TextCompletionRequestor(
|
||||
pulsar_host=self.pulsar_host, timeout=self.timeout,
|
||||
pulsar_client=self.pulsar_client, timeout=self.timeout,
|
||||
auth = self.auth,
|
||||
),
|
||||
"prompt": PromptRequestor(
|
||||
pulsar_host=self.pulsar_host, timeout=self.timeout,
|
||||
pulsar_client=self.pulsar_client, timeout=self.timeout,
|
||||
auth = self.auth,
|
||||
),
|
||||
"graph-rag": GraphRagRequestor(
|
||||
pulsar_host=self.pulsar_host, timeout=self.timeout,
|
||||
pulsar_client=self.pulsar_client, timeout=self.timeout,
|
||||
auth = self.auth,
|
||||
),
|
||||
"document-rag": DocumentRagRequestor(
|
||||
pulsar_host=self.pulsar_host, timeout=self.timeout,
|
||||
pulsar_client=self.pulsar_client, timeout=self.timeout,
|
||||
auth = self.auth,
|
||||
),
|
||||
"triples-query": TriplesQueryRequestor(
|
||||
pulsar_host=self.pulsar_host, timeout=self.timeout,
|
||||
pulsar_client=self.pulsar_client, timeout=self.timeout,
|
||||
auth = self.auth,
|
||||
),
|
||||
"graph-embeddings-query": GraphEmbeddingsQueryRequestor(
|
||||
pulsar_host=self.pulsar_host, timeout=self.timeout,
|
||||
pulsar_client=self.pulsar_client, timeout=self.timeout,
|
||||
auth = self.auth,
|
||||
),
|
||||
"embeddings": EmbeddingsRequestor(
|
||||
pulsar_host=self.pulsar_host, timeout=self.timeout,
|
||||
pulsar_client=self.pulsar_client, timeout=self.timeout,
|
||||
auth = self.auth,
|
||||
),
|
||||
"agent": AgentRequestor(
|
||||
pulsar_host=self.pulsar_host, timeout=self.timeout,
|
||||
pulsar_client=self.pulsar_client, timeout=self.timeout,
|
||||
auth = self.auth,
|
||||
),
|
||||
"librarian": LibrarianRequestor(
|
||||
pulsar_host=self.pulsar_host, timeout=self.timeout,
|
||||
pulsar_client=self.pulsar_client, timeout=self.timeout,
|
||||
auth = self.auth,
|
||||
),
|
||||
"encyclopedia": EncyclopediaRequestor(
|
||||
pulsar_host=self.pulsar_host, timeout=self.timeout,
|
||||
pulsar_client=self.pulsar_client, timeout=self.timeout,
|
||||
auth = self.auth,
|
||||
),
|
||||
"dbpedia": DbpediaRequestor(
|
||||
pulsar_host=self.pulsar_host, timeout=self.timeout,
|
||||
pulsar_client=self.pulsar_client, timeout=self.timeout,
|
||||
auth = self.auth,
|
||||
),
|
||||
"internet-search": InternetSearchRequestor(
|
||||
pulsar_host=self.pulsar_host, timeout=self.timeout,
|
||||
pulsar_client=self.pulsar_client, timeout=self.timeout,
|
||||
auth = self.auth,
|
||||
),
|
||||
"document-load": DocumentLoadSender(
|
||||
pulsar_host=self.pulsar_host,
|
||||
pulsar_client=self.pulsar_client,
|
||||
),
|
||||
"text-load": TextLoadSender(
|
||||
pulsar_host=self.pulsar_host,
|
||||
pulsar_client=self.pulsar_client,
|
||||
),
|
||||
}
|
||||
|
||||
|
|
@ -205,31 +210,31 @@ class Api:
|
|||
requestor = self.services["text-load"],
|
||||
),
|
||||
TriplesStreamEndpoint(
|
||||
pulsar_host=self.pulsar_host,
|
||||
pulsar_client=self.pulsar_client,
|
||||
auth = self.auth,
|
||||
),
|
||||
GraphEmbeddingsStreamEndpoint(
|
||||
pulsar_host=self.pulsar_host,
|
||||
pulsar_client=self.pulsar_client,
|
||||
auth = self.auth,
|
||||
),
|
||||
DocumentEmbeddingsStreamEndpoint(
|
||||
pulsar_host=self.pulsar_host,
|
||||
pulsar_client=self.pulsar_client,
|
||||
auth = self.auth,
|
||||
),
|
||||
TriplesLoadEndpoint(
|
||||
pulsar_host=self.pulsar_host,
|
||||
pulsar_client=self.pulsar_client,
|
||||
auth = self.auth,
|
||||
),
|
||||
GraphEmbeddingsLoadEndpoint(
|
||||
pulsar_host=self.pulsar_host,
|
||||
pulsar_client=self.pulsar_client,
|
||||
auth = self.auth,
|
||||
),
|
||||
DocumentEmbeddingsLoadEndpoint(
|
||||
pulsar_host=self.pulsar_host,
|
||||
pulsar_client=self.pulsar_client,
|
||||
auth = self.auth,
|
||||
),
|
||||
MuxEndpoint(
|
||||
pulsar_host=self.pulsar_host,
|
||||
pulsar_client=self.pulsar_client,
|
||||
auth = self.auth,
|
||||
services = self.services,
|
||||
),
|
||||
|
|
@ -266,6 +271,11 @@ def run():
|
|||
help=f'Pulsar host (default: {default_pulsar_host})',
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
'--pulsar-listener',
|
||||
help=f'Pulsar listener (default: none)',
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
'-m', '--prometheus-url',
|
||||
default=default_prometheus_url,
|
||||
|
|
|
|||
|
|
@ -7,10 +7,10 @@ from . endpoint import ServiceEndpoint
|
|||
from . requestor import ServiceRequestor
|
||||
|
||||
class TextCompletionRequestor(ServiceRequestor):
|
||||
def __init__(self, pulsar_host, timeout, auth):
|
||||
def __init__(self, pulsar_client, timeout, auth):
|
||||
|
||||
super(TextCompletionRequestor, self).__init__(
|
||||
pulsar_host=pulsar_host,
|
||||
pulsar_client=pulsar_client,
|
||||
request_queue=text_completion_request_queue,
|
||||
response_queue=text_completion_response_queue,
|
||||
request_schema=TextCompletionRequest,
|
||||
|
|
|
|||
|
|
@ -8,10 +8,10 @@ from . sender import ServiceSender
|
|||
from . serialize import to_subgraph
|
||||
|
||||
class TextLoadSender(ServiceSender):
|
||||
def __init__(self, pulsar_host):
|
||||
def __init__(self, pulsar_client):
|
||||
|
||||
super(TextLoadSender, self).__init__(
|
||||
pulsar_host=pulsar_host,
|
||||
pulsar_client=pulsar_client,
|
||||
request_queue=text_ingest_queue,
|
||||
request_schema=TextDocument,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -14,16 +14,16 @@ from . serialize import to_subgraph
|
|||
|
||||
class TriplesLoadEndpoint(SocketEndpoint):
|
||||
|
||||
def __init__(self, pulsar_host, auth, path="/api/v1/load/triples"):
|
||||
def __init__(self, pulsar_client, auth, path="/api/v1/load/triples"):
|
||||
|
||||
super(TriplesLoadEndpoint, self).__init__(
|
||||
endpoint_path=path, auth=auth,
|
||||
)
|
||||
|
||||
self.pulsar_host=pulsar_host
|
||||
self.pulsar_client=pulsar_client
|
||||
|
||||
self.publisher = Publisher(
|
||||
self.pulsar_host, triples_store_queue,
|
||||
self.pulsar_client, triples_store_queue,
|
||||
schema=JsonSchema(Triples)
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -8,10 +8,10 @@ from . requestor import ServiceRequestor
|
|||
from . serialize import to_value, serialize_subgraph
|
||||
|
||||
class TriplesQueryRequestor(ServiceRequestor):
|
||||
def __init__(self, pulsar_host, timeout, auth):
|
||||
def __init__(self, pulsar_client, timeout, auth):
|
||||
|
||||
super(TriplesQueryRequestor, self).__init__(
|
||||
pulsar_host=pulsar_host,
|
||||
pulsar_client=pulsar_client,
|
||||
request_queue=triples_request_queue,
|
||||
response_queue=triples_response_queue,
|
||||
request_schema=TriplesQueryRequest,
|
||||
|
|
|
|||
|
|
@ -13,16 +13,16 @@ from . serialize import serialize_triples
|
|||
|
||||
class TriplesStreamEndpoint(SocketEndpoint):
|
||||
|
||||
def __init__(self, pulsar_host, auth, path="/api/v1/stream/triples"):
|
||||
def __init__(self, pulsar_client, auth, path="/api/v1/stream/triples"):
|
||||
|
||||
super(TriplesStreamEndpoint, self).__init__(
|
||||
endpoint_path=path, auth=auth,
|
||||
)
|
||||
|
||||
self.pulsar_host=pulsar_host
|
||||
self.pulsar_client=pulsar_client
|
||||
|
||||
self.subscriber = Subscriber(
|
||||
self.pulsar_host, triples_store_queue,
|
||||
self.pulsar_client, triples_store_queue,
|
||||
"api-gateway", "api-gateway",
|
||||
schema=JsonSchema(Triples)
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue