4

我正在使用Python Elasticsearch API在我的应用程序中与 ES 进行交互。目前,一旦应用程序收到用户请求,它就会这样做esclient = Elasticsearch("127.0.0.1"),然后使用它esclient来搜索所需的数据。但我最近读到 ES 有持久连接。所以,

  1. 我应该保存esclient某个地方并重复使用它吗?如果是,我该怎么做?
  2. 如果我在请求之后忘记esclient并下次打开一个新的,会不会有一些资源泄漏?如果是,我该如何解决这个问题/关闭打开的连接?

此外,对于 memcached/Redis python API 也有同样的问题。我client = Client("127.0.0.1")在每个用户请求期间都做了多次。

对不起,这似乎是一个愚蠢的问题,但我有点困惑。

提前致谢!

4

1 回答 1

1

对于 elasticsearch python 客户端,您应该只有一个实例并继续重复使用它。

如果您创建新的连接,将会有一些连接挂起,而且您的应用程序和弹性搜索本身都将支付创建和维护额外连接的开销,这是不好的。

如果是 Django 或 Flask 应用程序,您可以创建一个 elasticsearch 特定的资源文件并按如下方式创建一个连接并在任何地方重用它。

ESCLIENT = Elasticsearch()

随处导入 ESCLIENT 并重用。

于 2020-09-09T13:24:08.560 回答