在Django中集成elasticsearch连接池

时间:2017-04-24 16:40:41

标签: python django elasticsearch connection-pooling

我有一个django应用程序,用于存储大量传感器的状态信息,我正在尝试使用elasticsearch来存储所有状态数据,以便进一步分析。

我在Python脚本中经常使用elasticsearch。

我的问题是如何将elasticsearch-py / elasticsearch-dsl连接池集成到django应用程序中。我想不为每个请求创建连接。我实际上是想把它嵌入到apps.py中的MyAppConfig中,但我不确定这是不是一个好主意。

任何帮助?

1 个答案:

答案 0 :(得分:4)

Elasticsearch-dsl可以通过以下方式使用ready app功能轻松集成。

/ <强>初始化的.py

default_app_config = '<app>.apps.AppConfig'

/apps.py

import logging

from django.apps import AppConfig
from django.conf import settings
from elasticsearch_dsl.connections import connections

log = logging.getLogger('elastic')


class AppConfig(AppConfig):
    name = <app_name>

    def ready(self):
        connections.configure(**settings.ELASTICSEARCH)

然后在django设置中我有一个名为elasticsearch的词典,带有别名配置

ELASTICSEARCH = {
    'default': {
        'hosts': [
            {
                'host': <your_host>,
                'port': <your_host_port>,
                'verify_certs': True,
                'use_ssl': True,
                'http_auth': (
                    <auth_name>,
                    <auth_passwd>
                )
            }
        ]
    },
    'dev': {
        'hosts': [
            {
                'host': 'localhost',
                'port': 9200
            }
        ]
    }
}