mesilov / bitrix24-php-sdk

A powerful PHP library for the Bitrix24 REST API
MIT License
409 stars 161 forks source link

add support for operating timing #340

Open mesilov opened 1 year ago

mesilov commented 1 year ago

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 секунд до наступления таймаута кидаем событие (какое? и с чем)

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

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

mesilov commented 1 year ago

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

Пытаюсь разобраться с 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 commented 1 year ago

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

Korablinov commented 1 year ago

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

Chitaric commented 1 year ago

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

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

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

SergeyArc commented 1 year ago

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