Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add support for operating timing #340

Open
mesilov opened this issue Mar 15, 2023 · 5 comments
Open

add support for operating timing #340

mesilov opened this issue Mar 15, 2023 · 5 comments
Assignees
Labels
2.x issue related with 2.x sdk version batch queries issue related with batch queries subsystem 💠 core improve DX developer experience improvement 💰 sponsored задача оплачена ⏳ WIP work in progress

Comments

@mesilov
Copy link
Owner

mesilov commented Mar 15, 2023

add support for operating timing

https://dev.1c-bitrix.ru/rest_help/rest_sum/operating.php

С версии модуля Rest 22.0.0 в облачной версии Битрикс24 во всех ответах rest запросов в массиве time с дополнительной информацией о времени выполнения запроса добавлен дополнительный ключ operating, который говорит о времени выполнения запроса к методу конкретным приложением. Данные о времени выполнения запросов к методу суммируются. При превышении времени выполнения запросов сверх 480 секунд в рамках прошедших 10 минут данный метод блокируется для приложения. При этом все остальные методы продолжают работать.
Ключ operating_reset_at возвращает timestamp в которое будет высвобождена часть лимита на данный метод.

Проблематика
В запросов на изменение данных по большому количеству сущностей может происходить блокировка, которую SDK должен корректно отбработать и пробросить это радостное событие в клиентский код.

Как моделируем

  1. добавить 100к контактов у которых по 2-3 телефона, (при необходимости подкрутить текущий скрипт генерации демо-данных)
  2. тестовым скриптом обойти контакты и удалить один из телефонов добавив запись таймлайн контакта, что удалили телефон - скрипт работает с каждым контактом отдельным запросом к апи (цикл с двумя вызовами внутри)
  3. тестовым скриптом обойти контакты и удалить один из телефонов добавив запись таймлайн контакта, что удалили телефон - скрипт работает с контактами в батч-режиме

ожидания по работе SDK

  1. в случае наступления таймаута корректно кидает в логи ошибку (какую) и эксепшн (какой)?
  2. в случае за N секунд до наступления таймаута кидаем событие (какое? и с чем)

тестовый стенд:

  • обёртка в клиентском коде поверх SDK которая может корректно обработать все контакты с учётом operating

можно оформить как ещё один интеграционный тест

@mesilov mesilov self-assigned this Mar 15, 2023
@mesilov mesilov added 2.x issue related with 2.x sdk version improvement improve DX developer experience 💰 sponsored задача оплачена ⏳ WIP work in progress batch queries issue related with batch queries subsystem 💠 core labels Mar 15, 2023
@mesilov
Copy link
Owner Author

mesilov commented Apr 15, 2023

Забрал твою веточку, сейчас причешу немного

Пытаюсь разобраться с operating, но не понимаю что он мне выводит
https://dev.1c-bitrix.ru/rest_help/rest_sum/operating.php
С версии модуля Rest 22.0.0 в облачной версии Битрикс24 во всех ответах rest запросов в массиве time с дополнительной информацией о времени выполнения запроса добавлен дополнительный ключ operating, который говорит о времени выполнения запроса к методу конкретным приложением. Данные о времени выполнения запросов к методу суммируются. При превышении времени выполнения запросов сверх 480 секунд в рамках прошедших 10 минут данный метод блокируется для приложения. При этом все остальные методы продолжают работать.
Ключ operating_reset_at возвращает timestamp в которое будет высвобождена часть лимита на данный метод.

Проблематика
В запросов на изменение данных по большому количеству сущностей может происходить блокировка, которую SDK должен корректно отбработать и пробросить это радостное событие в клиентский код.

ожидания по работе SDK

  1. в случае наступления таймаута корректно кидает в логи ошибку (какую) и эксепшн (какой)?
  2. в случае за N секунд до наступления таймаута кидаем событие (какое? и с чем) \ вызываем хендлер?

@mesilov
Copy link
Owner Author

mesilov commented Apr 15, 2023

Альтернативный вариант - за N секунд до наступеления таймаута начинаем ждать когда можно будет продолжить работу (скорее всего, сделать две стратегии, какая будет - указываешь в момент конфигурирования сервиса)

@Korablinov
Copy link

Товарищи, если не затруднит, добавьте в тесты операйтинг для батча - запуск БП ( столкнулся с такой задачей)

@Chitaric
Copy link

@mesilov Хотелось бы чтобы ваш код продолжал работать и для коробочных решений...

С версии модуля Rest 22.0.0 в облачной версии Битрикс24

Для коробки оно не работает

@SergeyArc
Copy link

Это да, коробка не возвращает данный параметр в массиве. Из-за этого вылетают предупреждения "обращение к несуществующему ключу". Надо эту ситауцию обрабатывать. Я думаю в этом посыл

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
2.x issue related with 2.x sdk version batch queries issue related with batch queries subsystem 💠 core improve DX developer experience improvement 💰 sponsored задача оплачена ⏳ WIP work in progress
Projects
None yet
Development

No branches or pull requests

4 participants