Что означает постоянное соединение в Elasticsearch Python API?

Я использую API Python Elasticsearch для взаимодействия с ES в моем приложении. В настоящее время, как только приложение получает запрос пользователя, оно делает esclient = Elasticsearch("127.0.0.1") а затем использует это esclient искать необходимые данные. Но я недавно прочитал, что ES имеет постоянные связи. Так,

  1. Должен ли я сохранить esclient где-то и повторно использовать это? Если да, как мне это сделать?
  2. Будет ли утечка ресурсов, если я забуду о esclient после запроса и открыть новый в следующий раз? Если да, как мне вылечить это / закрыть открытое соединение?

Кроме того, те же вопросы для API Python memcached / Redis. я делаю client = Client("127.0.0.1") несколько раз в течение каждого запроса пользователя.

Извините, может показаться глупым вопросом, но я немного запутался.

Заранее спасибо!

0 ответов

Для клиента python elasticsearch у вас должен быть только один экземпляр и продолжать его использовать.

Если вы создадите новые, некоторые соединения останутся висящими, но и ваше приложение, и сам elasticsearch будут оплачивать накладные расходы по созданию и поддержке дополнительных соединений, что не очень хорошо.

Если это приложение Django или Flask, вы можете создать специальный файл ресурсов для elasticsearch и создать соединение, как показано ниже, и повторно использовать его везде.

ESCLIENT = Elasticsearch()

Импортируйте ESCLIENT повсюду и используйте его повторно.

Другие вопросы по тегам