1

Ошибка при выполнении большого отчета

Тема: Ошибка при выполнении большого отчета

Добрый день.

При попытки выполнить отчет за период более месяца, прилетает error 4, хотя при меньших сроках все ок. Предположил, что это связано с ограничением по времени выполнения отчета, решил выполнять в цикле дробя большой период на несколько маленьких и выполняя несколько отчетов. Теперь первая итерация - ок, вторая - error 4, reason VALIDATE_PARAMS_ERROR: {tableIndex: int, config: {}}. Не могу понять почему при выполнении отчета ожидаются поля tableInex, config. Псевдокод цикла такой:

  • /wialon/ajax.html?svc=report/exec_report&params=
  • /wialon/ajax.html?svc=report/select_result_rows&params=
  • /wialon/ajax.html?svc=report/cleanup_result&params={}

P.S. не стал подробно расписывать код, при необходимости могу добавить.

Заранее спасибо.

2

Ошибка при выполнении большого отчета

Re: Ошибка при выполнении большого отчета

Код бы полный ..

gps-report.ru
Разработка приложений для Wialon
Мы расширяем возможности мониторинга!
Telegram: @dire77
3

Ошибка при выполнении большого отчета

Re: Ошибка при выполнении большого отчета

developer77 пишет:

Код бы полный ..

Ну вот метод (python) в котором реализован описанный мною алгоритм

    def execReportFromString(self, start, end, unit_id, stringTemplate, reportResourceId):
        url_server = self.url_api
        sid = self.eid
        url_report = '/wialon/ajax.html?svc=report/exec_report&params='
        url = url_server + url_report
        s_start = 0
        s_end = 0
        while end - s_start > 1295999:
            s_start = start
            if stringTemplate['n'] != "АПи групповой":
                s_end = end
                s_start = end
            elif end - s_start > 1295999:
                s_end = start + 1295999
            else:
                s_end = end
            param = {
                "reportResourceId": reportResourceId,
                "reportTemplateId": 0,
                "reportObjectId": unit_id,
                "reportObjectSecId": 0,
                "reportTemplate": stringTemplate,
                "interval": {
                    "from": start,
                    "to": s_end,
                    "flags": 0
                }
            }
            data = json.dumps(param, separators=(',', ':')) 
            connect = url + data + '&sid=' + sid
            response = requests.post(connect)
            dict_ans = response.json()
            start += 1296000
            result_table = []
            global_result = {}
            for i in dict_ans['reportResult']['tables']:
                name = str(i['label']) 
                result = name
                result_table.append(result)
            nums_of_tables = int(len(result_table))
            print(nums_of_tables)
            for i in range(nums_of_tables):
                url = url_server + '/wialon/ajax.html?svc=report/select_result_rows&params='  
                param = {
                    "tableIndex": i,
                    "config": {
                        "type": "range",
                        "data": {
                            "from": 0,
                            "to": 400000,
                            "level": 6,
                        }
                    }
                }
                data = json.dumps(param, separators=(',', ':')) 
                connect = url + data + '&sid=' + sid
                response = requests.post(connect)
                name_table = result_table[i]
                rows_of_table = response.json()
                if name_table not in global_result:
                    global_result[name_table] = rows_of_table
                else:
                    global_result[name_table] += rows_of_table
            if stringTemplate['n'] == "АПи групповой":
                self.cleanUpResult()
4

Ошибка при выполнении большого отчета

(31/08/2022 16:20:25 отредактировано developer77)

Re: Ошибка при выполнении большого отчета

Чето до боли знакомый код). Как будто свой читаю. Отпишите в личку телеграмм @dire77

gps-report.ru
Разработка приложений для Wialon
Мы расширяем возможности мониторинга!
Telegram: @dire77
5

Ошибка при выполнении большого отчета

(31/08/2022 16:26:18 отредактировано developer77)

Re: Ошибка при выполнении большого отчета

Я понял кто пишет. Код действительно мой. Ну по крайней мере был пока не купили).

https://sdk.wialon.com/wiki/ru/sidebar/ … esult_rows

Вот ответ, почитайте внимательно, там ответ сверху

gps-report.ru
Разработка приложений для Wialon
Мы расширяем возможности мониторинга!
Telegram: @dire77
6

Ошибка при выполнении большого отчета

Re: Ошибка при выполнении большого отчета

Ограничений по времени нет, есть лимит на кол-во сообщений, но вернулась бы не error:4. Не думаю, что здесь проблема

Причём ошибка error 4, reason VALIDATE_PARAMS_ERROR: {tableIndex: int, config: {}} связана со вторым запросом /wialon/ajax.html?svc=report/select_result_rows&params=  . Этот запрос зависит от предыдущего, как будто запрашиваете то, что не пришло. Надо попробовать вывести результат report/exec_report и параметры следующего за ним report/select_result_rows

Точно проблему не вижу, как минимум, global_result должна быть объявлена вне цикла..

7

Ошибка при выполнении большого отчета

Re: Ошибка при выполнении большого отчета

shmi пишет:

Ограничений по времени нет, есть лимит на кол-во сообщений, но вернулась бы не error:4. Не думаю, что здесь проблема

Причём ошибка error 4, reason VALIDATE_PARAMS_ERROR: {tableIndex: int, config: {}} связана со вторым запросом /wialon/ajax.html?svc=report/select_result_rows&params=  . Этот запрос зависит от предыдущего, как будто запрашиваете то, что не пришло. Надо попробовать вывести результат report/exec_report и параметры следующего за ним report/select_result_rows

Точно проблему не вижу, как минимум, global_result должна быть объявлена вне цикла..

https://sdk.wialon.com/wiki/ru/sidebar/ … its/limits - есть ограничение на выполнение отчета 5 минут
error 4, reason VALIDATE_PARAMS_ERROR: {tableIndex: int, config: {}} - ответ на report/exec_report во второй итерации
Если запрашиваю отчет за большой период (без цикла), то прилетает просто error 4

8

Ошибка при выполнении большого отчета

Re: Ошибка при выполнении большого отчета

developer77 пишет:

Я понял кто пишет. Код действительно мой. Ну по крайней мере был пока не купили).

https://sdk.wialon.com/wiki/ru/sidebar/ … esult_rows

Вот ответ, почитайте внимательно, там ответ сверху

Приветствую)
К сожалению, не увидел очевидного ответа, т.к. сейчас у меня ошибка прилетает на этапе формирования отчета, а не на этапе получения строк из него.

9

Ошибка при выполнении большого отчета

Re: Ошибка при выполнении большого отчета

Ну кроме как разобрать полный пример кода в IDE с выводом ответа и значений переменных, я не вижу. Ну попробуйте в личку отписать, по крайней мере в моих apps ,,все работает корректно. Пусть как 'гарантийный случай' проходит

gps-report.ru
Разработка приложений для Wialon
Мы расширяем возможности мониторинга!
Telegram: @dire77