Зміни в документі Batch запити

Остання зміна 2024/05/16 18:58 автором Ashterix

Від версії 4.1
редаговано Ashterix
дата 2024/05/16 16:54
Змінити коментар: Немає коментарів для цієї версії
До версії 4.2
редаговано Ashterix
дата 2024/05/16 17:17
Змінити коментар: Немає коментарів для цієї версії

Підсумок

Подробиці

Властивості сторінки
Вміст
... ... @@ -202,3 +202,24 @@
202 202  1. **Зручність і ефективність**: Залежні запити дозволяють виконувати складні операції з мінімальними зусиллями, забезпечуючи правильну послідовність виконання запитів.
203 203  1. **Зменшення кількості мережевих запитів**: Усі запити об'єднуються в один, що знижує навантаження на мережу.
204 204  1. **Гнучкість**: Можливість створювати складні сценарії запитів без необхідності додаткових налаштувань чи змін на бекенді.
205 +
206 += Як це працює =
207 +
208 +Механізм обробки batch запитів працює асинхронно.
209 +
210 +Отримуючи масив запитів RPC Server створює чергу з [[Symfony Process>>https://symfony.com/doc/current/components/process.html]], тобто запускає CLI команди, які обробляються асинхронно. В циклі while стан процесів перевіряється, і якщо отримано результат, він додається до масиву відповідей. Якщо ж відповіді немає до закінчення таймауту, повертається помилка про те, що запит не оброблено.
211 +
212 +== Алгоритм: ==
213 +
214 +* Batch запит розбивається на окремі запити, кожен з яких додається до черги.
215 +* В циклі перевіряється наявність об’єктів у черзі.
216 +* Для кожного об'єкту черги перевіряється, чи завершився процес.
217 +* Якщо процес завершився, результат додається до масиву відповідей, а процес видаляється з черги.
218 +* Якщо процес не завершився і таймаут ще не вийшов, цикл продовжується.
219 +* Якщо таймаут вийшов до отримання результату, для конкретного запиту повертається помилка про те, що запит не оброблено.
220 +
221 +Щоб збільшити таймаут у batch запиті, в параметрах конкретного запиту можна вказати додатковий службовий параметр {{code language="none"}}$rpc.timeout{{/code}}. За замовчуванням значення таймауту становить 10 секунд.
222 +
223 +Це дозволяє налаштувати тривалість очікування результатів від процесів, що може бути важливо для обробки складних або тривалих запитів.
224 +
225 +Таким чином, механізм обробки batch запитів забезпечує асинхронну обробку з можливістю налаштування таймауту для кращої гнучкості та продуктивності.