Python Пирамида (карниз) с Elasticsearch DSL

Использование Python Pyramid и ElastiSearch. Я посмотрел на pythonelasticsearch-dsl, который предлагает хороший ORM, но я не уверен, как интегрировать его с пирамидой.

До сих пор я делал "глобальное соединение" согласно pythonelasticsearch-dsl и выставляю соединение через атрибут в запросе пирамиды.

Вы видите что-то не так с этим кодом?!

from elasticsearch_dsl import connections   

def _create_es_connection(config):


    registry = config.registry
    settings = registry.settings

    es_servers = settings.get('elasticsearch.' + 'servers', ['localhost:9200'])
    es_timeout = settings.get('elasticsearch.' + 'timeout', 20)

    registry.es_connection = connections.create_connection(
        hosts=es_servers,
        timeout=es_timeout)

def get_es_connection(request):
    return getattr(request.registry, 'es_connection', 
                   connections.get_connection())

# main
def main(global_config, **settings):
     ...
     config = Configurator(settings=settings)

     config.add_request_method(
                               get_es_connection,
                               'es',
                               reify=True)

Я использую соединение как

#view
request.es ...

Если есть какие-то другие способы, я буду признателен за любые указатели - спасибо.

1 ответ

Некоторые вещи выглядят странно, но я думаю, что это происходит из-за копирования / вставки из вашего проекта (отсутствующий тип приведен в настройках, соединения не определены и т. Д.)

То, что вы пытаетесь сделать, очень похоже на то, что вы делаете с SQLAlchemy: https://docs.pylonsproject.org/projects/pyramid_cookbook/en/latest/database/sqlalchemy.html

Но в соответствии с документами pythonelasticsearch-dsl вам даже не нужно беспокоиться обо всем этом, поскольку библиотека lib позволяет определять глобальное соединение по умолчанию: https://elasticsearch-dsl.readthedocs.io/en/latest/configuration.html по умолчанию-соединение

Другие вопросы по тегам