leshchenko1979 / fast_bitrix24

Высокопроизводительный API wrapper для Питона для быстрого массового обмена данными с Битрикс24 через REST API
MIT License
151 stars 31 forks source link

Стратегия выборки в get_all() #24

Closed leshchenko1979 closed 3 years ago

leshchenko1979 commented 4 years ago

Текущая стратегия выборки в get_all() с использованием параметра start, хотя и позволяет использовать параллелизм, но замедляет работу сервера. Ее применение может быть неоптимальным при условиях: 1) требуется сложная фильтрация с выгрузкой небольшого количества записей 2) полный список сущностей (без фильтров) содержит большое количество записей

Для таких случаев более оптимальной может быть стратегия, описанная тут: https://dev.1c-bitrix.ru/rest_help/rest_sum/start.php

Можно дать пользователю в get_all() параметр strategy, который он будет использовать, чтобы выбрать стратегию. Либо можно после первого вызова в зависимости от размера параметра filter в params и от total, возвращаемого в первом ответе, выбирать стратегию автоматически. Алгоритм выбора стратегии можно подобрать опытным путем.

leshchenko1979 commented 3 years ago

Если такая паджинация действительно в разы быстрее, то:

leshchenko1979 commented 3 years ago

См. результаты теста: https://github.com/leshchenko1979/fast_bitrix24/discussions/113

leshchenko1979 commented 3 years ago

В итоге все закончилось созданием метода list_and_get(): #118