• Что такое ElasticSearch?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Знаете, я с вами соглашусь, что хорошую вводную по Elastic трудно найти. Пока сам не переварил доков и не набил шишек многие элементарные понятия оставались для меня неясными. Поэтому вот моя вводная: Elastic можно использовать как NoSQL БД, только надо быть внимательным, т.к. всё-таки его основная задача поиск, а не удовлетворение функций БД. Например, если вы не настроили хранение исходных данных, а только индексацию, то свои данные вы уже не извлечёте из него. НИКОГДА. Только отдельные выражения, удовлетворяющие условиям поиска. Всё, тупик. Так же нельзя повторно индексировать уже загнанные в него данные. Т.е. перед загрузкой данных надо грамотно настроить индексацию, т.к. перестроить индекс, как это делается в реляционной БД невозможно. Нужно придумать новую схему индексации и перезалить данные в Elastic. Именно поэтому основное использование Elastic - как дополнение к существующей БД из которой данные можно перезалить по одному или полностью в Elastic (можно, конечно сделать схему Elastic->Elastic, но тоже есть нюансы).
    Ещё пару слов про схему. Это ЛОЖЬ, что в Elastic нет схемы данных. Она как раз есть и ооочень жёсткая. Жёсткая до того, что однажды определив, вы не сможете её поменять. Изначально Elastic оказывает медвежью услугу, разрешая вам дополнять схему по-умолчанию, но когда вы разберётесь с этой темой, то можете обнаружить, что Elastic "понастроил" такого у себя внутри, что остаётся только охреневать и переделывать всё явно, отказавшись от его "услуг" по автоматическому добавлению полей в схему.
    Так же в Elastic очень непросто строить сложные запросы на поиск и агрегатные запросы. Совершенно неинтуитивно. Но если освоитесь, то будет вам счастье. )))
    Несмотря за такие "страшные" вещи - Elastic классная система и по производительности агрегатных запросов не уступает платной версии MSSQL в поиске в многопроцессорных системах (проверял на одинаковых аппаратных конфигурациях с 16 ядрами). Так что если вам хочется большую скорость в агрегатных запросах и главное - это бесплатность, то берите и осваивайте Elastic. Мощности и возможности у него огромные. Но... нужно потратить приличные усилия на изучение.
    Ответ написан
    1 комментарий
  • Сколько инстанстов Flask приложения запускает Gunicorn?

    @Deadkenny Автор вопроса
    В конце концов я пришёл к выводу что Gunicorn запускает один экземпляр Flask приложения.
    Запросы от NGINX попадают в Gunicorn, а он в свою очередь определяет передавать их в приложение сейчас или позже. Запросы от Gunicorn поступают в объект wsgi_app Flask`а. На каждый из запросов приложение Flask выделяет поток из пула потоков со своим контекстом, а после запроса этот контекст убивает. Таким образом получается что каждый worker Gunicorn обрабатывается в одном экземпляре приложения асинхронно.

    Standalone WSGI Containers
    Middlewares Werkzeug
    Flask Викиучебник
    Ответ написан
    Комментировать
  • Как обернуть json объект в django rest framework?

    deepblack
    @deepblack
    https://www.django-rest-framework.org/api-guide/re...
    @api_view(['GET'])
    @renderer_classes([JSONRenderer])
    def get_data(request, format=None):
        """
        A view that returns  JSON.
        """
        data = {
            "import_id": 7
         }
        content = {'data': data}
        return Response(content)
    Ответ написан
    Комментировать
  • Как обернуть json объект в django rest framework?

    @MAGistr_MTM
    Учусь программировать
    Если вам нужно только для отображения такое, тогда нужно переписать to_representation метод в сериалайзера вот доки.
    Ответ написан
    Комментировать
  • Как сделать кастомный ответ на запрос?

    @MAGistr_MTM
    Учусь программировать
    1. Использовать разные сериалайзеры
    2. Кастомизировать метод to_representation и/или добавлять read_only поля

    ПС. Если представления сильно различаются(видимо так и будет), то я б просто сделал два(или больше) разных сериалайзера, и уже в них формировал нужные данные и в нужной структуре.
    Ответ написан
    Комментировать
  • Как в модели БД реализовать динамический список?

    @MAGistr_MTM
    Учусь программировать
    Вам нужно ManyToMany
    Ответ написан
    Комментировать