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 #342

Conversation

mesilov
Copy link
Owner

@mesilov mesilov commented Mar 19, 2023

ишью, в рамках которого идёт работа - #340

@mesilov mesilov added 2.x issue related with 2.x sdk version improvement improve DX developer experience ⏳ WIP work in progress labels Mar 19, 2023
@mesilov
Copy link
Owner Author

mesilov commented Mar 19, 2023

@KarlsonComplete попробуй в качестве генератора демо-данны использовать готовое консольное приложение https://github.com/mesilov/bitrix24-php-sdk/blob/master/tools/DemoDataGenerators/CRM/Contacts/GenerateContactsCommand.php если что, то просто внеси в него правки добавляющие нужный функционал

Кирилл Храмов added 6 commits March 22, 2023 16:55
- Добавлена часть кода в тесте для поиска созданных контактов с помощью батча и метода list.
- Добавлена часть кода в тесте для поиска созданных контактов с помощью батча и метода list.
- В тест добавлена часть с update использующая батч.
@KarlsonComplete
Copy link
Contributor

  • Данные контактов генерирую с помощью гениратора как ты и говорил.
  • Апдейт теперь в батч режиме работает.
  • Я генерировал правда не 100к , а 30к.
    2023-03-23_20-01-26  problembo com

* Update contact
*
* Update elements in array with structure
* element_id => [ // deal id
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Кажется тут не про сделку, а про контакт

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Исправлено

@mesilov
Copy link
Owner Author

mesilov commented Mar 24, 2023

@KarlsonComplete ты молодец, отличное начало.

Смотри, у тебя в результате работы в логах есть записи которые отдаёт Б24, тот самый operating.
Т.к. мы работаем асинхронно, то проще всего приаттачить лог с примерами записей вида:

  • тут начали работу
  • тут вот ещё пара секунд и получим ошибку (оператинг меняется)
  • тут нам сервер уже отдал не 200, а чото другое и вот что в логах и вот этот эксепшн мы кинули, вот в этой строчке.

Т.е. ты смоделировал ситуацию (готово), собрал артефакты в виде логов (в процессе), в этот момент мы на них смотрим и задаём себе вопрос, вот нам надо проапдейтить 50к контактов в батче и мы всё равно получаем гдето в середине ошибку с operating, что нам надо делать чтобы клиентский код был готов к этому?

  • твои предложения

@KarlsonComplete
Copy link
Contributor

@mesilov
Наш operating это ведь время выполнения запроса к методу ?
То есть мы можем накапливать наш operating и складывать его с предыдущим, после чего при приближении его к отметки в 480 секунд можем выкинуть предупреждение о превышении выполнения запроса.
И если можно поясни пожалуйста: "Ключ operating_reset_at возвращает timestamp в которое будет высвобождена часть лимита на данный метод." Не до конца понимаю что делает этот ключ.

@KarlsonComplete
Copy link
Contributor

Пытаюсь разобраться с operating, но не понимаю что он мне выводит , я хочу во время того как в цикле foreach у нас обновляются контакты , добавить массив с operating и после чего с помощью array_sum складывать те секунды которые у нас в этом массиве. Но выводится не понятно что. Что это за время такое 2224110.8363545???
Вот начало вывода:
summa operating: 0.77941226959229
operating rest at: 1680530625
summa operating: 1.5588245391846
operating rest at: 1680530625
summa operating: 2.3382368087769
operating rest at: 1680530625
............
............
и конец
summa operating: 2224110.8363545
operating rest at: 1680531196
summa operating: 2224590.0655539
operating rest at: 1680531196
После чего нас кидает в ошибку как и должно быть:
Bitrix24\SDK\Core\Exceptions\BaseException : batch update entity items: query limit exceeded - too many requests
E:\OSPanel\domains\bitrix\bitrix24-php-sdk\src\Core\Batch.php:238
E:\OSPanel\domains\bitrix\bitrix24-php-sdk\src\Services\CRM\Contact\Service\Batch.php:245
E:\OSPanel\domains\bitrix\bitrix24-php-sdk\tests\Integration\OperatingTimingTest\OperatingTimingTest.php:40

Caused by
Bitrix24\SDK\Core\Exceptions\QueryLimitExceededException: query limit exceeded - too many requests

E:\OSPanel\domains\bitrix\bitrix24-php-sdk\src\Core\ApiLevelErrorHandler.php:58
E:\OSPanel\domains\bitrix\bitrix24-php-sdk\src\Core\Core.php:156
E:\OSPanel\domains\bitrix\bitrix24-php-sdk\src\Core\Batch.php:772
E:\OSPanel\domains\bitrix\bitrix24-php-sdk\src\Core\Batch.php:688
E:\OSPanel\domains\bitrix\bitrix24-php-sdk\src\Core\Batch.php:217
E:\OSPanel\domains\bitrix\bitrix24-php-sdk\src\Services\CRM\Contact\Service\Batch.php:245
E:\OSPanel\domains\bitrix\bitrix24-php-sdk\tests\Integration\OperatingTimingTest\OperatingTimingTest.php:40

@mesilov mesilov merged commit 2fbb095 into mesilov:340-add-support-for-operating-timing Apr 15, 2023
5 of 6 checks passed
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 improve DX developer experience improvement ⏳ WIP work in progress
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants