Ich habe ein Objekt, das viel mit elasticsearch und cassandra interagiert. Aber ich weiß nicht, wo ich meine Cassandra- und Elasticsearch-Sitzung instanziieren soll. Soll ich es in meinem „Code“, und übergeben Sie die Sitzung in einen Parameter meiner Funktion wie folgt aus:OOP Python: Wo instanziieren Cassandra und Elasticsearch Cluster?
cassandra_cluster = Cluster()
session = cassandra_cluster.connect()
es = Elasticsearch()
class Article:
document_type = "cnn_article"
def __init__(self):
self.author = ""
self.url = ""
...
@classmethod
def from_crawl(cls, url):
obj = cls()
# Launch a crawler and fill the fields and return the object
@classmethod
def from_elasticseacrh(cls, elastic_search_document):
obj = cls()
# Read the response from elasticsearch and return the object
def save_to_cassandra(self):
# Save an object into cassandra
session.execute(.....)
def save_to_elasticsearch(self, index_name, es):
# Save an object into elasticsearch
es.index(index=index_name, ...)
...
article = Article.from_crawl("http://cnn.com/article/blabla")
article.save_to_cassandra(session)
article.save_to_elasticsearch("cnn", es)
Oder sollte ich die Instanziierung meiner cassandra und Elasticsearch Sitzung als Instanzvariablen wie folgt aus:
class Article:
cassandra_cluster = Cluster()
session = cassandra_cluster.connect()
es = Elasticsearch()
document_type = "cnn_article"
def __init__(self):
self.author = ""
self.url = ""
...
@classmethod
def from_crawl(cls, url):
obj = cls()
# Launch a crawler and fill the fields and return the object
@classmethod
def from_elasticseacrh(cls, elastic_search_document):
obj = cls()
# Read the response from elasticsearch and return the object
def save_to_cassandra(self):
# Save an object into cassandra
session.execute(.....)
def save_to_elasticsearch(self):
# Save an object into elasticsearch
es.index(....)
...
article = Article.from_crawl("http://cnn.com/article/blabla")
article.save_to_cassandra()
article.save_to_elasticsearch()