Например, веб-сервер (Django / flask) будет общаться с сервером Elasticsearch.
Я нахожу следующий код и думаю, что requests.session()
дает мне connection reuse
(я прав в этом?)
class ElasticSearch(object):
self.session = requests.session()
...
Всякий раз, когда я хочу поговорить с Elasticsearch, я делаюследующий
from elasticsearch import Elasticsearch
es = Elasticsearch()
Не создаст ли он объект questions.session, поэтому я создаю requests.session
объект (таким образом, отдельное соединение) для каждого модуля, который я объявляю Elasticsearch()
?
Что произойдет, если я создам экземпляр Elasticsearch()
внутри функции / метода?Поскольку Elasticsearch()
и self.session
воссоздаются при каждом вызове функции, я не получаю повторного использования соединения?
def get_something_from_es(self):
from elasticsearch import Elasticsearch
es = Elasticsearch()
Должен ли я создать синглтон для Elasticsearch()
, если я хочу использовать только 1 соединение?
Почему я не вижу такой код часто? (я гугл эластичный поисковый синглтон, почти ничего не выходит) Не очень хорошая идея поделиться этой связью?
ну, я думаю, это может стоить отдельного вопроса, но мне интересно знать лучшие практики использования requests library
для соединения сервер-сервер.
- Я уверен, чтоasticsearch-py имеет ответ на вопрос (потому что у них есть реализация) .
- Хотя у них есть ответ на первыйвопрос, я не уверен, что я использую это правильно (Этот вопрос больше об этом)