例如,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
用于服务器到服务器连接的最佳实践。
- 我确定 elasticsearch-py 有问题的答案(因为他们有实现)。
- 虽然他们有第一个问题的答案,但我不确定我是否正确使用它(This question is more about this)