2

例如,Web 服务器(Django/flask)会与 Elasticsearch 服务器通信。

我找到以下代码,并认为requests.session()给了我connection reuse(我是对的吗?)

class ElasticSearch(object):
    self.session = requests.session()
    ...

每当我想与 Elasticsearch 交谈时,我都会执行以下操作

from elasticsearch import Elasticsearch
es = Elasticsearch()

它不会创建一个 requests.session 对象,所以我为我声明的每个模块创建requests.session对象(因此是单独的连接)Elasticsearch()吗?

如果我Elasticsearch()在函数/方法中实例化会发生什么?由于Elasticsearch()and it'sself.session是在每个函数调用中重新创建的,所以我没有连接重用?

def get_something_from_es(self):
    from elasticsearch import Elasticsearch
    es = Elasticsearch()

Elasticsearch()如果我只想使用 1 个连接,我应该创建一个单例吗?

为什么我不经常看到这样的代码?(我谷歌弹性搜索单例,几乎没有出现)共享连接不是一个好主意?

好吧,我想这可能值得一个独立的问题,但我有兴趣了解requests library用于服务器到服务器连接的最佳实践。

  1. 我确定 elasticsearch-py 有问题的答案(因为他们有实现)
  2. 虽然他们有第一个问题的答案,但我不确定我是否正确使用它(This question is more about this)
4

0 回答 0