QueryIncompleteError: Ваш запрос не был завершен в течение 300 секунд. Скорее всего что-то не так с нашей стороны

При выполнении запроса на извлечение с помощью клиента Python Keen мы постоянно сталкиваемся с одной и той же ошибкой:

Сообщение: Ваш запрос не был выполнен в течение 300 секунд. Скорее всего что-то не так с нашей стороны. Пожалуйста, сообщите нам об этом по адресу [email protected].

Код: QueryIncompleteError

Параметры запроса: (в формате JSON)

{
    "timezone": -18000,
    "event_collection": "Loaded a Page",
    "filters": [
        {
            "operator": "eq",
            "property_name": "reportType",
            "property_value": "Profile"
        }
    ],
    "timeframe": {
        "start": "2017-04-24",
        "end": "2017-06-19"
    }
}

Мои подозрения заключаются в том, что запрошенный диапазон дат слишком велик, и API Keen задыхается от размера этого набора данных, но из сообщения об ошибке это не ясно.


person Mike Petrovich    schedule 20.06.2017    source источник
comment
Вы пытались построить график диапазона дат в зависимости от времени ответа?   -  person plugwash    schedule 20.06.2017


Ответы (1)


Ваша догадка верна! Эта ошибка 504 возникает, когда истекает время ожидания запроса (выполняется более 5 минут). Вот способы сократить время выполнения вашего запроса:

<сильный>1. Сократите временные рамки в запросе

Чем меньше таймфрейм, тем быстрее выполняется запрос. Запрос данных за одну неделю будет в 4 раза быстрее, чем запрос данных за 1 месяц (примерно).

Относительно простым решением было бы разбить этот запрос на два запроса, разделив временной интервал на две или более частей.

<сильный>2. Уменьшите количество извлекаемых свойств.

Тип запроса извлечение принимает параметр с именем property_names. Здесь вы можете перечислить набор свойств, которые вам нужны для извлечения. Без этого параметра API будет возвращать все свойства ваших событий. Использование property_names для извлечения только необходимых свойств может значительно снизить затраты на вычисления и накладные расходы на запрос.

<сильный>3. Уменьшите размер коллекции

Это, вероятно, не применимо в данном случае, потому что ваша модель данных уже установлена ​​и разумна, но запрос, анализирующий 400 миллионов событий, займет примерно в два раза больше времени, чем запрос, анализирующий 200 миллионов событий. По этой причине мы рекомендуем не хранить все типы событий в одной мегаколлекции. Keen был разработан, чтобы иметь несколько коллекций для каждого типа действий (регистрации, открытия, сообщения и т. д.). Если вы сузите эту коллекцию до «Загрузили страницу профиля», например, ваш запрос будет намного быстрее, поскольку ему не придется сортировать все другие типы отчетов.

Для других, столкнувшихся с этой ошибкой, кэширование также может сократить время ответа на запрос до миллисекунд. Кэширование работает для всех типов анализа, таких как подсчет, сумма, медиана и т. д., кроме< /em> для извлечения.

person Michelle Wetzler    schedule 21.06.2017