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 по умолчанию-соединение