Elasticsearch Python API 中的持久连接是什么意思?

huh*_*ihi 5 python memcached connection-leaks redis elasticsearch

我正在使用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")在每个用户请求期间都会执行多次。

抱歉,这似乎是一个愚蠢的问题,但我有点困惑。

提前致谢!

AKH*_*HEW 2

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

如果您创建新的连接,则会有一些连接悬而未决,而且您的应用程序和elasticsearch本身都将付出创建和维护额外连接的开销,这不好。

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

ESCLIENT = Elasticsearch()
Run Code Online (Sandbox Code Playgroud)

到处导入 ESCLIENT 并重复使用。