Comments (3)
- Сначала малой кровью проверить, что паджинация через ID действительно быстрее - на списках в 30+К, с большой выборкой полей, со сложными фильтрациями.
Если такая паджинация действительно в разы быстрее, то:
- Переписать mult_request.py - запускать внутри
run
параллельно создателя задач и воркера. - Воркер одновременно будет выполнять столько задач из очереди, сколько srh может выполнять одновременно (
srh.max_concurrent_requests
). Выполнение будет происходить черезwait_for
, перемежаясь с опросом очереди задач на предмет появления новых задач и добавления их в набор выполняемых задач, если этот набор не заполнен до конца. - Создателей задач будет 2 типа - один с классической стратегией с батчами с увеличивающимся
start
, а другой - с двумя потоками запросов соstart = -1
(с начала списка и с конца), базирующимися на паджинации через фильтр поID
. - Паджинация через фильтр по
ID
будет подразумевать в создателе задач в каждом потоке (с начала и с конца) ожидание события о том, что очередной результат от сервера получен, нахождение крайнего значенияID
в нем и формирование новой задачи на базе этого значенияID
. Когда потоки встречаются (крайний ID потока сначала становится больше крайнего ID потока с конца), генерация задач прекращается. - Выбор стратегии паджинации будет происходить через передачу параметра
ID_pagination
конструктору. - Альтернативно можно делать два запроса по двум стратегиям, таймить их и выбирать стратегию, сравнив тайминг двух первых запросов.
from fast_bitrix24.
См. результаты теста: #113
from fast_bitrix24.
В итоге все закончилось созданием метода list_and_get()
: #118
from fast_bitrix24.
Related Issues (20)
- Проблема с обработкой вызовов в синхронном режиме в Spyder (IPython) HOT 3
- Добавь в доку кейс о проблеме Битрикса HOT 4
- Ошибка при вызове метода task.commentitem.getlist HOT 3
- как получить текстовое значение списка пользовательского поля сделки HOT 4
- Сумма времени всех запросов к методу превышает 480 секунд в рамках прошедших 10 минут / Обход ошибки HOT 2
- Параметры ограничения скорости запросов в конструкторе
- Cant filter items when using list_and_get method HOT 3
- Выдавать предупреждение, когда в фильтрах используют None
- Warning, если get_all используется с методом, не кончающимся на *.list HOT 2
- При использовании warings.warn() stacklevel должен быть установлен так, чтобы показывать на пользовательский код
- Передавать в конструктор несколько вебхуков и качать сразу из нескольких
- Скорректировать предупреждение HOT 1
- Добавить параметр для отключения SSL в конструкторе
- Внедрение параметра `__orderXXXXXX` при вызове call() ломает `crm.item.productrow.list`
- extract_from_batch_response HOT 3
- Создавать копию объекта params в UserRequestAbstract HOT 2
- Сделать предупреждение, что tasks.* — тупая ветка методов, там только call_raw, а не call
- AttributeError: 'dict' object has no attribute 'extend' в методе crm.item.list HOT 2
- Настройка размера батчей и внутреннего предела operating_time
- Добавить возможность работать с fast_bitrix24 из приложения используя access_token вместо хука HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fast_bitrix24.